设计模式之Chain ofResponsibility -职责链
来源:互联网 发布:矩阵奇艺是什么意思 编辑:程序博客网 时间:2024/05/20 03:41
在责任链模式中,很多对象由每一个对象对其下家的引用而接 起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求,系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择:承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。
晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个漂亮的MM哎,找张纸条,写上“Hi,可以做我的女朋友吗?如果不愿意请向前传”,纸条就一个接一个的传上去了,糟糕,传到第一排的MM把纸条传给老师了,听说是个老处女呀,快跑!
===============================================
被执行的对象,请求接口
package Chain.of.Responsibility;
//请求:被执行者
public class Request {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void execute(){
}
}
====================================================
被执行的对象,请求接口的实现者一
package Chain.of.Responsibility;
public class EatRequest extends Request {
public void eatRequest(){
System.out.println("我 请求吃饭");
}
}
====================================================
被执行的对象,请求接口的实现者二
package Chain.of.Responsibility;
public class PrintRequst extends Request {
public void printRequest(){
System.out.println("print print request request");
}
}
======================================================
被执行的对象,请求接口的实现者三
package Chain.of.Responsibility;
public class HelpRequest extends Request {
public void helpRequest(){
System.out.println("request正在寻求大家的帮助");
}
}
======================================================
package Chain.of.Responsibility;
//请求执行者,请求在这两个接口方法之间默认调用
public interface Handler{
//最后默认调用的类
public void handle(Request request);
public void handleRequest(Request request);
}
====================================================
请求执行者,具体请求在请求链中执行的过程
package Chain.of.Responsibility;
public class ConcreteHandler implements Handler{
public void handleRequest(Request request){
if (request instanceof HelpRequest)
{
((HelpRequest) request).helpRequest();
}else if (request instanceof PrintRequst)
{
((PrintRequst) request).printRequest();
}else
{
//传递到下一个
this.handle(request);
}
}
@Override
public void handle(Request request)
{
System.out.println("请把这个request交给老师");
}
}
=========================================
测试接口
package Chain.of.Responsibility;
public class TestMain {
public static void main(String[] args) {
EatRequest request = new EatRequest();
ConcreteHandler concreteHandler = new ConcreteHandler();
concreteHandler.handleRequest(request);
}
}
=========================================
程序运行后的结果 请把这个request交给老师
- 设计模式之Chain ofResponsibility -职责链
- 设计模式之Chain of Responsibility职责链模式
- 设计模式读书笔记之职责链模式(chain of responsibility)
- 设计模式之职责链模式(Chain of Responsibility )
- 【设计模式】之 Chain of Responsibility 职责链模式
- java设计模式之职责链模式 Chain of Responsibility
- 设计模式之职责链模式(Chain of Responsibility)
- 设计模式入门之职责链模式Chain Of Responsibility
- 设计模式之职责链模式(Chain of Responsibility)摘录
- 设计模式之职责链模式(Chain Of Responsibility)
- 设计模式读书笔记之职责链模式(chain of responsibility)
- 【设计模式】行为模式之Chain of Responsibility职责链
- 设计模式之Chain of Responsibility(职责链)
- 设计模式之Chain of Responsibility(职责链)
- 设计模式之Chain of Responsibility(职责链)
- 设计模式之Chain of Responsibility(职责链)
- 设计模式之Chain of Responsibility(职责链)
- 设计模式之Chain of Responsibility(职责链)
- 利用tcpdump抓取mysql sql语句
- 一步步学习SPD2010--第十章节--SP网站品牌化(10)--使用智能提示来增加CSS
- android IPC及原理简介
- 用Android-X86和VirtualBox打造高性能Android开发环境
- Binder基本概念流程学习
- 设计模式之Chain ofResponsibility -职责链
- 安装iTunes时出现安装回滚无法安装…
- 不能读取文件itunes library.…
- windows操作系统下不影响正常引导…
- H3C认证后linux操作系统可以上ipv6…
- Linux系统编译器GCC和g++的重要区…
- 巧用matlab做中继实现excel数据按格式输出到word
- c++如何取出string中的第一个字符…
- Matlab与txt、dat接口示例