设计模式之Chain ofResponsibility -职责链
2014-03-17 15:46
375 查看
晚上去上英语课,为了好开溜坐到了最后一排,哇,前面坐了好几个漂亮的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交给老师
相关文章推荐
- 设计模式C++描述----05.职责链(Chain of Responsibility)模式
- 设计模式之职责链模式(Chain Of Responsibility)
- 设计模式24---设计模式之职责链模式(Chain of Responsibility)(行为型)
- C# 设计模式-职责链(Chain of Responsibility)
- 【设计模式基础】行为模式 - 3 - 职责链(Chain of responsibility)
- 设计模式的征途—14.职责链(Chain of Responsibility)模式
- Java设计模式十一: 职责链模式(Chain of Responsibility)
- 设计模式之Chain of Responsibility(职责链)
- Java设计模式十一: 职责链模式(Chain of Responsibility)
- 重温设计模式(三)——职责链模式(chain of responsibility) [转载]
- 设计模式-职责链/责任链模式(Chain of Responsibility)分析理解和在Android的应用
- 设计模式之Chain of Responsibility职责链模式
- 设计模式19:Chain Of Responsibility 职责链模式(行为型模式)
- 设计模式之Chain of Responsibility(职责链)
- atitit.(设计模式1)--—职责链(chain of responsibility)最佳实践O7 转换日期
- 设计模式与泡mm的关系之Chain of Responsibility职责链模式及再思考
- 设计模式(17)-职责链模式(Chain of Responsibility)
- 设计模式深入学习--Chain of Responsibility 职责链模式职责链模式(行为型模式)
- 【设计模式学习笔记十四】【行为模式】【职责链模式(Chain Of Responsibility)】
- Java设计模式——职责链模式(Chain of Responsibility)