- 浏览: 188299 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
3. 行为型模式 (5) 责任链模式
1. 责任链模式
2. 责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。 通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 优点: 1. 降低耦合度。它将请求的发送者和接收者解耦。 2. 简化了对象。使得对象不需要知道链的结构。 3. 增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。 4. 增加新的请求处理类很方便。 缺点: 1. 不能保证请求一定被接收。 2. 系统性能将受到一定影响,而且在进行代码调试时不太方便,可能会造成循环调用。 3. 可能不容易观察运行时的特征,有碍于除错。
1. 责任链模式
package com.andrew.pattern0305.chain.model01; public abstract class AbstractLogger { public static int INFO = 1; public static int DEBUG = 2; public static int ERROR = 3; protected int level; protected AbstractLogger nextLogger; public void setNextLogger(AbstractLogger nextLogger) { this.nextLogger = nextLogger; } public void logMessage(int level, String message) { if (this.level <= level) { write(message); } if (nextLogger !=null) { nextLogger.logMessage(level, message); } } abstract protected void write(String message); }
package com.andrew.pattern0305.chain.model01; public class ConsoleLogger extends AbstractLogger { public ConsoleLogger(int level) { this.level = level; } @Override protected void write(String message) { System.out.println("Standard Console::Logger: " + message); } } package com.andrew.pattern0305.chain.model01; public class ErrorLogger extends AbstractLogger { public ErrorLogger(int level) { this.level = level; } @Override protected void write(String message) { System.out.println("Error Console::Logger: " + message); } } package com.andrew.pattern0305.chain.model01; public class FileLogger extends AbstractLogger { public FileLogger(int level) { this.level = level; } @Override protected void write(String message) { System.out.println("File Console::Logger: " + message); } }
package com.andrew.pattern0305.chain.model01; /** * 1. 责任链模式 * * @author andrew * @date 2018/08/15 */ public class Client { private static AbstractLogger getChainOfLoggers() { AbstractLogger errorLogger = new ErrorLogger(AbstractLogger.ERROR); AbstractLogger fileLogger = new FileLogger(AbstractLogger.DEBUG); AbstractLogger consoleLogger = new ConsoleLogger(AbstractLogger.INFO); errorLogger.setNextLogger(fileLogger); fileLogger.setNextLogger(consoleLogger); return errorLogger; } public static void main(String[] args) { AbstractLogger loggerChain = getChainOfLoggers(); loggerChain.logMessage(AbstractLogger.INFO, "This is an information."); loggerChain.logMessage(AbstractLogger.DEBUG, "This is an debug level information."); loggerChain.logMessage(AbstractLogger.ERROR, "This is an error information."); } } 运行结果: Standard Console::Logger: This is an information. File Console::Logger: This is an debug level information. Standard Console::Logger: This is an debug level information. Error Console::Logger: This is an error information. File Console::Logger: This is an error information. Standard Console::Logger: This is an error information.
2. 责任链模式
package com.andrew.pattern0305.chain.model02; public abstract class Handler { protected Handler successor; public abstract void handleRequest(); public Handler getSuccessor() { return successor; } public void setSuccessor(Handler successor) { this.successor = successor; } }
package com.andrew.pattern0305.chain.model02; public class ConcreteHandler extends Handler { @Override public void handleRequest() { if (getSuccessor() != null) { System.out.println("放过请求"); getSuccessor().handleRequest(); } else { System.out.println("处理请求"); } } }
package com.andrew.pattern0305.chain.model02; /** * 2. 责任链模式 * * @author andrew * @date 2018/08/15 */ public class Client { public static void main(String[] args) { Handler handler1 = new ConcreteHandler(); Handler handler2 = new ConcreteHandler(); handler1.setSuccessor(handler2); handler1.handleRequest(); } } 运行结果: 放过请求 处理请求
发表评论
-
3. 行为型模式 (11) 解释器模式
2018-11-08 10:39 3943. 行为型模式 (11) 解释器模式 解释器模式(In ... -
3. 行为型模式 (10) 中介者模式
2018-11-08 09:56 3703. 行为型模式 (10) 中介者模式 中介者模式(Me ... -
3. 行为型模式 (9) 访问者模式
2018-11-07 14:30 3703. 行为型模式 (9) 访问者模式 访问者模式(Vis ... -
3. 行为型模式 (8) 状态模式
2018-11-07 09:13 4553. 行为型模式 (8) 状态模式 状态模式(State ... -
3. 行为型模式 (7) 备忘录模式
2018-11-06 14:27 4333. 行为型模式 (7) 备忘录模式 备忘录模式(Mem ... -
3. 行为型模式 (6) 命令模式
2018-11-06 11:40 3823. 行为型模式 (6) 命令模式 命令模式(Comma ... -
3. 行为型模式 (4) 迭代子模式
2018-11-05 14:23 3533. 行为型模式 (4) 迭代 ... -
3. 行为型模式 (3) 观察者模式
2018-11-02 16:17 4483. 行为型模式 (3) 观察者模式 当对象间存在一对多 ... -
3. 行为型模式 (2) 模板方法模式
2018-11-02 09:26 4183. 行为型模式 (2) 模板方法模式 在模板模式(Te ... -
3. 行为型模式 (1) 策略模式
2018-11-01 09:23 4393. 行为型模式 (1) 策略模式 在策略模式(Stra ... -
2. 结构型模式 (3) 代理模式
2018-10-29 11:26 3752. 结构型模式 (3) 代理模式 代理模式(Proxy ... -
2. 结构型模式 (7) 享元模式
2018-10-30 13:27 4142. 结构型模式 (7) 享元模式 享元模式(Flywe ... -
2. 结构型模式 (6) 组合模式
2018-10-30 09:50 3662. 结构型模式 (6) 组合模式 组合模式(Compo ... -
2. 结构型模式 (2) 装饰者模式
2018-10-29 09:30 4112. 结构型模式 (2) 装饰器模式 装饰器模式(Dec ... -
2. 结构型模式 (5) 桥接模式
2018-10-30 09:11 3952. 结构型模式 (5) 桥接模式 桥接(Bridge) ... -
2. 结构型模式 (4) 外观模式
2018-10-29 14:20 3512. 结构型模式 (4) 外观模式 外观模式(Fac ... -
2. 结构型模式 (1) 适配器模式
2018-10-26 15:35 3852. 结构型模式 (1) 适配器模式 将一个类的接口转换 ... -
1. 创建型模式 (2) 原型模式
2018-09-12 13:46 7451. 创建型模式 (2) 原型模式 用原型实例指定创建对 ... -
1. 创建型模式 (3) 建造者模式
2018-10-25 16:28 3731. 创建型模式 (3) 建造 ... -
1. 创建型模式 (1) 单例模式
2018-09-12 13:42 4311. 创建型模式 (3) 单例模式 单例模式是为确保一个 ...
相关推荐
c++设计模式-行为型模式-责任链模式;qt工程;c++简单源码; 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的...
JAVA-设计模式-行为型模式-责任链模式
4. **责任链模式**:责任链模式是行为型设计模式,它使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。在这个模式中,请求沿着处理者链进行传递,每个处理者都有机会处理请求,或者将请求传递...
3. **责任链模式**:在对象链中传递请求,由链上的对象决定是否处理该请求,使得系统可以在不影响客户端的情况下动态调整责任分配。 4. **策略模式**:定义一组可互换的算法,并封装起来,使得它们可以相互替换,...
责任链模式是一种行为型设计模式,用于处理程序中的请求。该模式通过建立一条链式结构,使得多个对象都有机会处理请求,从而达到解耦发送者和接收者的目的。在责任链模式中,请求沿着链从一个对象传递到下一个对象,...
责任链模式是一种行为设计模式,它允许我们把请求沿着处理者链进行传递,直到某个处理者处理这个请求。这种模式让请求的发送者和接收者解耦,因为发送者无需知道哪个对象会处理请求,而接收者也无需知道请求来自哪里...
7. **其他未详细展开的模式**:除了上述模式,还有其他行为型模式,如观察者模式、模板方法模式、访问者模式、状态模式等,它们各自解决了特定的编程问题,如事件通知、算法骨架、对象行为的动态变化等。 理解并...
在给定的文档中,提到了23种设计模式中的几种行为型模式,包括责任链模式、迭代器模式、中介者模式、命令模式、解释器模式、访问者模式、策略模式、模板方法模式、状态模式、观察者模式以及备忘录模式。下面将对这些...
责任链模式使得多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。它将请求沿链传递,直到有对象处理它。比如在一个审批流程中,多个审批者组成一条链,请求从头到尾传递,直到找到合适的审批人...
1. 责任链模式(Chain of Responsibility):将请求沿链传递,直到找到处理它的对象。 2. 命令模式(Command):将命令封装为对象,使得你可以参数化不同对象,同时支持命令的撤销和恢复。 3. 解释器模式...
责任链模式是软件设计模式中的一种行为模式,它允许在对象之间传递请求,同时让接收者决定是否处理这个请求。这种模式将请求的发送者和接收者解耦,使得多个对象都有机会处理一个请求,而无需显式指定具体的处理者。...
行为型模式是软件设计模式中的一个重要类别,它们主要关注对象之间的责任分配和交互。在Python编程语言中,我们可以利用这些模式来提高代码的可读性、可维护性和灵活性。本资料"基于Python的行为型模式设计.zip"包含...
3. 行为型模式 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式...
责任链模式(Chain of Responsibility Pattern)是设计模式中的一种行为模式,它的主要目的是将请求的发送者和接收者解耦,使得多个对象有机会处理这个请求,形成一条责任链。在这个链上,请求会沿着链传递,直到有...
在《Head First Design Patterns》文中是这么介绍责任链模式的,“通过责任链模式,你可以为某个请求创建一个对象链。每个对象依次检查此请求,并对其进行处理,或者将它传给链中的下一个...责任链模式属于行为型模式。
3. 行为型模式:这类模式关注对象之间的交互和职责分配,包括策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、责任链模式(Chain ...
5. 责任链模式: 责任链模式允许将请求沿着处理者链传递,直到被某个处理者处理。每个处理者都可以处理请求,或者将请求传递给链中的下一个处理者。这种模式可以避免对象之间的耦合,提高系统的灵活性。 6. 模板...
责任链模式是一种行为型设计模式,它通过构建一个对象链,使得一个请求能够沿着这个链传递,直到被链上的某个对象处理为止。该模式的主要目的是将请求的发送者和接收者解耦,即请求发送者不需要知道是谁处理了请求,...
行为型模式涉及对象之间的交互和职责分配,如观察者模式、模板方法模式、策略模式、命令模式、迭代器模式、访问者模式、备忘录模式、状态模式、解释器模式和责任链模式。 二、Java中的具体设计模式 1. 单例模式:...