当前位置:首页 » 坚守职责 » 职责链

职责链

发布时间: 2020-11-29 11:49:46

㈠ 用java代码实现责任链模式的骨干代码

//----------------先写了个,功能是实现了,有待改进-----------
import java.util.ArrayList;
import java.util.List;

/**
* 现有List<SourceBean>类型的List对象,
* 现在需要将该List对象中a是奇数或者b>100的对象过滤掉,
* 请用责任链模式实现此段代码。
* @author Administrator
*
*/
public class Chain_test1 {

public static void main(String[] args) {
List<SourceBean> list = new ArrayList<SourceBean>();
SourceBean bean1 = new SourceBean(1, 100);
SourceBean bean2 = new SourceBean(2, 200);
SourceBean bean3 = new SourceBean(3, 100);
SourceBean bean4 = new SourceBean(4, 100);
SourceBean bean5 = new SourceBean(5, 20);
SourceBean bean6 = new SourceBean(6, 200);
list.add(bean1);
list.add(bean2);
list.add(bean3);
list.add(bean4);
list.add(bean5);
list.add(bean6);
System.out.println("过滤前List中的内容");
printList(list);
// 装配 链条
Filter oddFilter = new OddFilter();
//为了保持Filter里面的逻辑不混乱,OddFilter仅过滤奇数,CompareFilter仅仅过滤b>100
//这里对奇数过滤两次,
//即,过滤掉b>100和a是奇数 共存的情形
Filter oddFilter2 = new OddFilter();
Filter compareFilter = new CompareFilter();
oddFilter.setFilter(null);
compareFilter.setFilter(oddFilter);
oddFilter2.setFilter(compareFilter);
// 进行过滤
oddFilter2.doFilter(list);
System.out.println("\n过滤后List中的内容");
printList(list);
}
public static void printList(List<SourceBean> list){
for(SourceBean s: list){
System.out.print(s.toString());
}
}

}

class Filter{
private Filter filter;

public void doFilter(List<SourceBean> list){
if (filter != null){
filter.doFilter(list);
}else{
System.out.println("处理结束");
}
}

public void setFilter(Filter filter){
this.filter = filter;
}
}

/**
* 仅仅过滤b>100
*/
class CompareFilter extends Filter{
public void doFilter(List<SourceBean> list){
for(int i= 0; i< list.size(); i++){
if(list.get(i).getB() > 100 ){//b>100
list.remove(i);//移除该对象
}else{//交给其他Filter处理
super.doFilter(list);
}
}
}
}

/**
* 仅过滤a为奇数
*/
class OddFilter extends Filter{
public void doFilter(List<SourceBean> list){

for(int i= 0; i< list.size(); i++){
if(list.get(i).getA() % 2 != 0){//非偶数
list.remove(i);//移除该对象
}else{//交给其他Filter处理
super.doFilter(list);
}
}

}
}

class SourceBean {
private int a;
private int b;

public SourceBean(int a, int b){
this.a = a;
this.b = b;
}
public SourceBean(){
}

public String toString(){
return "[a="+a+", b="+b+"] ";
}

public int getA() {
return a;
}

public void setA(int a) {
this.a = a;
}

public void setB(int b) {
this.b = b;
}

public int getB() {
return b;
}
}
//------------------------执行结果----------------------------
过滤前List中的内容
[a=1, b=100] [a=2, b=200] [a=3, b=100] [a=4, b=100] [a=5, b=20] [a=6, b=200]
过滤后List中的内容
[a=4, b=100]

㈡ 深入浅出:什么是基于Java的责任链模式

1、责任链模式就是这种“推卸”责任的模式,你的问题在我这里能解决我就解决,不行就把你推给另一个对象。至于到底谁解决了这个问题了呢?我管呢!
2、责任链模式由两个角色组成:
1) 抽象处理者角色(Handler):它定义了一个处理请求的接口。当然对于链子的不同实现,也可以在这个角色中实现后继链。
2) 具体处理者角色(Concrete Handler):实现抽象角色中定义的接口,并处理它所负责的请求。如果不能处理则访问它的后继者。
至于类图不放也罢。毕竟就是一个继承或者实现。
3、从名字上大概也能猜出这个模式的大概模样——系统中将会存在多个有类似处理能力的对象。当一个请求触发后,请求将在这些对象组成的链条中传递,直到找到最合适的“责任”对象,并进行处理。
《设计模式》中给它的定义如下:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
从定义上可以看出,责任链模式的提出是为了“解耦”,以应变系统需求的变更和不明确性。
下面是《设计模式》中给出的适用范围:
1) 有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
2) 你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
3) 可处理一个请求的对象集合应被动态指定。

㈢ BCHC区块链在社会的责任是什么

在中心化的电商平台之上,用户数据库是最重要的资产,通过用户购买等行为的层层转化,最终实现价值:

但在分布式经济之中,价值驱动的源头却不再是中心化的某个机构,而是社区,

社区中的价值传递也不再依赖于传统的集中化系统。如分布式电商网络BitCherry,

通过打造包括商家、消费者、超级节点与平台等不同角色的生态,利用“消费即挖矿”等模式实现生态增值,由此公平获利。

㈣ 责任链设计模式为什么使用抽象类

抽象类提高代码复用能力 行为的抽象,是规则,接口,(是特殊的个性) 事物的抽象,是共性,是抽象类(是一般的共性) 刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西

㈤ java 哪些框架用到了责任链模式

import java.io.*;
class PurchaseRequest{

public double Amount;
public int Number;
public String Purpose;
};

class Approver{

public Approver(){ successor=null;}

public void ProcessRequest(PurchaseRequest aRequest){
if(successor!=null){ successor.ProcessRequest(aRequest);}
}

public void SetSuccessor(Approver aSuccessor) { successor=aSuccessor;}

private Approver successor;

};

class Congress extends Approver {

public void ProcessRequest(PurchaseRequest aRequest){
if(aRequest.Amount<500000){
System.out.println("Congress is processing");
}
else super.ProcessRequest(aRequest);
}
}

class President extends Approver {

public void ProcessRequest(PurchaseRequest aRequest){
if(aRequest.Amount>=500000){
System.out.println("President is processing");
}
else super.ProcessRequest(aRequest);
}
}

class VicePresident extends Approver {

public void ProcessRequest(PurchaseRequest aRequest){
if(aRequest.Amount<100000){
System.out.println("VicePresident is processing");
}
else super.ProcessRequest(aRequest);
}
}

class Director extends Approver {

public void ProcessRequest(PurchaseRequest aRequest){
if(aRequest.Amount<50000){
System.out.println("Director is processing");
}
else super.ProcessRequest(aRequest);
}
}

public class rs
{
public static void main(String[] args) throws IOException {
Congress Meeting = new Congress();
President Tammy = new President();
VicePresident Sam = new VicePresident();
Director Larry = new Director();
//Construct Chain of Responsibility
Meeting.SetSuccessor(null);
Tammy.SetSuccessor(Meeting);
Sam.SetSuccessor(Tammy);
Larry.SetSuccessor(Sam);

PurchaseRequest aRequest = new PurchaseRequest();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
aRequest.Amount=Double.parseDouble(br.readLine());
Larry.ProcessRequest(aRequest);
}
}

㈥ 设计模式中,责任链模式和装饰者的异同,以及链条装配的背后原理(代码部分用java来描述)

推荐看一下:电子工业出版 郑阿奇老师的《软件秘笈-设计模式那点事》!里面含有相似设计模式的对比分析和java源码实现,实例通俗易懂,模式分析 静态类图看了一目了然!希望对你有帮助!

㈦ org.apache.log4j.logger用的是责任链模式吗

比如是Apache Tomcat 的对Encoding的 处理,Struts2 的拦截器, jsp servlet 的Filter 等等,都是基于责任链模式设计的。

㈧ 疼你的责任链接地址

这个在我的电脑上播放一点都不卡
你去试试
如果卡的话版就是你网速的问权题了
http://www.happyvalley.com.cn/activity/mp3/tengnidezheren.mp3

㈨ 供应链内部顾问的职责是什么

供应链内部顾问就是为企业提供供应链管理方案方面的咨询,整合并优化供应商、制造商、零售商的业务效率,使商品以正确的数量、正确的品质、在正确的地点、以正确的时间、最佳的成本进行生产和销售,从而达到有效性管理,使企业保证竞争优势,是一个颇具挑战性的职业。

热点内容
影视转载限制分钟 发布:2024-08-19 09:13:14 浏览:319
韩国电影伤口上纹身找心里辅导 发布:2024-08-19 09:07:27 浏览:156
韩国电影集合3小时 发布:2024-08-19 08:36:11 浏览:783
有母乳场景的电影 发布:2024-08-19 08:32:55 浏览:451
我准备再看一场电影英语 发布:2024-08-19 08:14:08 浏览:996
奥迪a8电影叫什么三个女救人 发布:2024-08-19 07:56:14 浏览:513
邱淑芬风月片全部 发布:2024-08-19 07:53:22 浏览:341
善良妈妈的朋友李采潭 发布:2024-08-19 07:33:09 浏览:760
哪里还可以看查理九世 发布:2024-08-19 07:29:07 浏览:143
看电影需要多少帧数 发布:2024-08-19 07:23:14 浏览:121