- 浏览: 931857 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
(11).责任链模式:
文章链接:http://haolloyin.blog.51cto.com/1177454/342166
职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
适用场景:
1、有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定;
2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求;
3、处理一个请求的对象集合应被动态指定。
不足之处:
1、对于每一个请求都需要遍历职责链,性能是个问题;
2、抽象处理者 AbstractHandler 类中的 handleRequest() 方法中使用了递归,栈空间的大小也是个问题。
个人看法:
职责链模式对于请求的处理是不知道最终处理者是谁,所以是运行动态寻找并指定;而命令模式中对于命令的处理时在创建命令是已经显式或隐式绑定了接收者。
package com.createtype.desginpatterns.responsibility; // 测试类 public class Client { public static void main(String[] args) { // 创建指责链的所有节点 AbstractHandler handler01 = new Handler01(); AbstractHandler handler02 = new Handler02(); AbstractHandler handler03 = new Handler03(); // 进行链的组装,即头尾相连,一层套一层 handler01.setNextHandler(handler02); handler02.setNextHandler(handler03); // 创建请求并提交到指责链中进行处理 AbstractRequest request01 = new Request01("请求-01"); AbstractRequest request02 = new Request02("请求-02"); AbstractRequest request03 = new Request03("请求-03"); // 每次提交都是从链头开始遍历 handler01.handleRequest(request01); handler01.handleRequest(request02); handler01.handleRequest(request03); } } package com.createtype.desginpatterns.responsibility; // 全局变量,接口类型 /** * 使用Java中的interface定义全局变量,可根据具体需要在 * 具体的包中使用静态导入相关的全局变量,语法如下: * import static package01.package02.*; */ interface Levels { public static final int LEVEL_01 = 1; public static final int LEVEL_02 = 2; public static final int LEVEL_03 = 3; } //抽象请求类 abstract class AbstractRequest { private String content = null; public AbstractRequest(String content) { this.content = content; } public String getContent() { return this.content; } // 获得请求的级别 public abstract int getRequestLevel(); } // 具体请求类01 class Request01 extends AbstractRequest { public Request01(String content) { super(content); } @Override public int getRequestLevel() { return Levels.LEVEL_01; } } // 具体请求类02 class Request02 extends AbstractRequest { public Request02(String content) { super(content); } @Override public int getRequestLevel() { return Levels.LEVEL_02; } } // 具体请求类03 class Request03 extends AbstractRequest { public Request03(String content) { super(content); } @Override public int getRequestLevel() { return Levels.LEVEL_03; } } // 抽象处理者类, abstract class AbstractHandler { // 责任链的下一个节点,即处理者 private AbstractHandler nextHandler = null; // 捕获具体请求并进行处理,或是将请求传递到责任链的下一级别 public final void handleRequest(AbstractRequest request) { // 若该请求与当前处理者的级别层次相对应,则由自己进行处理 if (this.getHandlerLevel() == request.getRequestLevel()) { this.handle(request); } else { // 当前处理者不能胜任,则传递至职责链的下一节点 if (this.nextHandler != null) { System.out.println("当前 处理者-0" + this.getHandlerLevel() + " 不足以处理 请求-0" + request.getRequestLevel()); // 这里使用了递归调用 this.nextHandler.handleRequest(request); } else { System.out.println("职责链上的所有处理者都不能胜任该请求..."); } } } // 设置责任链中的下一个处理者 public void setNextHandler(AbstractHandler nextHandler) { this.nextHandler = nextHandler; } // 获取当前处理者的级别 protected abstract int getHandlerLevel(); // 定义链中每个处理者具体的处理方式 protected abstract void handle(AbstractRequest request); } // 具体处理者-01 class Handler01 extends AbstractHandler { @Override protected int getHandlerLevel() { return Levels.LEVEL_01; } @Override protected void handle(AbstractRequest request) { System.out.println("处理者-01 处理 " + request.getContent() + "\n"); } } // 具体处理者-02 class Handler02 extends AbstractHandler { @Override protected int getHandlerLevel() { return Levels.LEVEL_02; } @Override protected void handle(AbstractRequest request) { System.out.println("处理者-02 处理 " + request.getContent()+ "\n"); } } // 具体处理者-03 class Handler03 extends AbstractHandler { @Override protected int getHandlerLevel() { return Levels.LEVEL_03; } @Override protected void handle(AbstractRequest request) { System.out.println("处理者-03 处理 " + request.getContent()+ "\n"); } }
- DesignPatterns.rar (120.8 KB)
- 下载次数: 4
发表评论
-
关于Java 23种设计模式的有趣见解
2013-08-10 18:01 981关于Java 23种设计模式的有趣见解 [来源] 51CT ... -
Java中常用的设计模式(转)
2013-01-30 12:30 1075下面是我对一些常用设计模式的理解: 模式分为:行为模 ... -
工厂模式,抽象工厂模式,简单工厂的区别
2012-10-10 21:35 9281.抽象工厂模式与工厂方法模式的最大区别就在于,工 ... -
java设计模式之常用设计模式分析
2012-06-05 09:09 1237常用的设计模式有:工厂模式(工厂方法模式,简单工厂模式, ... -
java设计模式之观察着模式(行为模式)
2012-06-04 14:28 951(10).观察着模式Observer 文章链接:ht ... -
java设计模式之适配器模式(结构型模式)
2012-06-04 14:26 644(9).适配器模式 文章链接:http://chjl2 ... -
java设计模式之动态代理模式(结构型模式)
2012-06-04 14:24 1119(8).代理模式: 文章 ... -
java设计模式之代理模式(结构型模式)
2012-06-04 14:22 1019(8).代理模式: ... -
java设计模式之——装饰模式结(构型模式)
2012-06-03 19:34 967三.例子代码:使用装饰 ... -
java设计模式之缺省适配器模式(构型模式)
2012-06-03 19:31 1347缺省适配器模式:文章链接:http://jzinfo.itey ... -
java设计模式之模板方法模式(行为模式 )
2012-06-03 19:03 1080package com.createtype.desginpa ... -
java设计模式之——组合模式(结构型模式 )
2012-06-03 18:24 1297接口的作用是什么?定 ... -
java设计模式之——策略模式(行为模式 )
2012-06-03 16:54 1021文章链接:http://yangguangfu ... -
java设计模式之简单工厂模式(创建型模式)
2012-06-01 00:01 1224/** * ## 具体产品(Con ... -
工厂模式,简单工厂模式,抽象工厂模式三者有什么区别
2012-05-31 23:59 1260文章链接: http://blog.csdn.net/ ... -
java设计模式之抽象工厂模式(创建型模式)
2012-05-31 23:57 1103package com.createtype.desgi ... -
java设计模式之工厂方法模式(创建型模式)
2012-05-31 23:56 913package com.createtype.desg ... -
java设计模式之单例模式(创建型模式)
2012-05-30 17:48 1030单列模式: 优点 ... -
java中设计模式分类
2012-05-01 18:31 1115常用的设计模式有:工厂模式(工厂方法模式,简单工厂模式, ... -
Bridge模式(桥接模式)
2012-04-17 22:19 922文章链接:http://airu.itey ...
相关推荐
开始击鼓时,花束就开始依次传递,鼓声一落,如果花束在某人手中,则该人就得饮酒,这是很典型的行为责任链模式。 State模式主要解决的是在开发中时常遇到的根据不同的状态需要进行不同的处理操作的问题,而这样的...
这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...
目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式
JAVA-设计模式-行为型模式-责任链模式
创建模式: ...设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...
java设计模式示例 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型...
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。
责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式(Memento Pattern) ...
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。
行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 设计模式遵循的原则有6个: 1、开闭原则(Open Close ...
《Java设计模式》源代码.rar “结构型模式”中的“适配器模式”的定义、结构与使用。 “结构型模式”中的“桥接模式”的定义、结构与使用。 “结构型模式”中的组合模式的定义、结构与使用。 “结构型模式”中的装饰...
关于Java的常用设计模式介绍 包括创建型设计模式、结构型设计模式、行为型设计模式等,内容简明、实例丰富。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。
JAVA设计模式,包括21个设计模式:有4个创建模式,7个结构模式,10个行为模式
Java代码积累:并发 设计模式 数据结构 使用容器 实用 类 基础知识 并发性 演示线程的生命周期 生产者-消费者 设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者...
java设计模式word整理,付代码说明,时候java进阶选手,欢迎选购! 目录 1 1. 设计模式 2 1.1 创建型模式 2 1.1.1 工厂方法 2 1.1.2 抽象工厂 4 1.1.3 建造者模式 6 1.1.4 单态模式 9 1.1.5 原型模式 10 1.2 结构型...
用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...
java 常用设计模式 ppt格式 分类 创建模式 结构模式 行为模式 优点 面向界面编程 降低耦合性 增加灵活性
java设计模式——创建模式、结构模式、行为模式