关于责任链的学习,具体参考代码
最关键点就是面向接口的编程思想
抽象类Manager:setSuperior(manager) 设置上级
抽象方法handler(requets)
由具体的子类去实现,根据不同的权限
这种设计模式优点:
1. 解除耦合
2. 容易扩展,比如增加ceo具体类,只要实现有关的handler方法和上下级,就可以使用了
以上的知识点来自"大话设计模式"一书。
package reponsibilitylink;
/**
* 责任链
* 1. 抽象经理,
* abstract void hanler(request),
* setSuperior()设置上级
* 2. 具体经理类
* 小组长:
* 设置上级
* 逻辑处理方法hanller()
* 具体权限设置,如果请求类型和内容符合,则处理
* 总经理:
* 设置上级
* 逻辑处理方法hanller()
* 如果请求类型和内容符合,则处理
* 3. 请求实体类
* type, content
* 4.
* @author root
*
*/
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GeneralManager general = new GeneralManager("generalmanager");
TeamLeader teamLeader = new TeamLeader("teamleader");
teamLeader.setSuperior(general);
Request request = new Request();
request.setType(1);
request.setContent("病假");
teamLeader.handle(request);
request = new Request();
request.setType(2);
request.setContent("加薪");
teamLeader.handle(request);
}
}
package reponsibilitylink;
public abstract class Manager {
Manager superior;
private String name;
public Manager(String name){
this.name = name;
}
public void setSuperior(Manager superior){
this.superior = superior;
}
protected abstract void handle(Request request);
}
package reponsibilitylink;
public class Request {
int type;
String content;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package reponsibilitylink;
public class TeamLeader extends Manager {
public TeamLeader(String name) {
super(name);
// TODO Auto-generated constructor stub
}
protected void handle(Request request) {
// TODO Auto-generated method stub
if(request.getType()==1){
System.out.println("同意: " + request.content);
}else{
if(superior!=null){
superior.handle(request);
}
}
}
}
package reponsibilitylink;
public class GeneralManager extends Manager {
public GeneralManager(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
protected void handle(Request request) {
// TODO Auto-generated method stub
if(request.getType()>1){
System.out.println("总经理批准 请求: " + request.getContent());
}
}
}
分享到:
相关推荐
Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...
设计模式C++学习之责任链模式(Chain of Responsibility)
责任链模式示例源码下载,有简单的设计思想的体现,可以用来学习
这个资源就是让你掌握责任链模式的原理和运用,你值得拥有,好好学习,天天向上。
okhttp责任链模式demo,方便学习
行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式) 2) 学习目标:通过学习,学员...
里面包含常规算法学习demo; 设计模式的分类 ...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
责任链模式代码demo,帮助你学习设计模式中的职责链模式
文件类型为PDF文件,此文档对20多种java设计模式进行了详细讲解,在中文讲解的过程中还附有代码示例给学习者进行参考,使学习者通过实践更容易理解设计模式的原理。 本文档目录: 1.工厂模式 2.单例模式 3.建造...
主要为大家介绍了JavaScript设计模式中的责任链模式,对JavaScript设计模式感兴趣的小伙伴们可以参考一下
本书的主要内容为:优化代码的第一步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器...
本书专门介绍Android源代码的设计模式,共26章,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。主要内容为:优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、...
使用Antlr、C++面向对象、责任链模式、访问者模式、设计一门自己的编程语言Hython.zip使用Antlr、C++面向对象、责任链模式、访问者模式、设计一门自己的编程语言Hython.zip使用Antlr、C++面向对象、责任链模式、访问...
设计模式是一种解决软件设计问题的经验总结,是在软件开发过程中经过反复验证的最佳实践。设计模式提供了一套通用的解决方案,可以帮助开发人员更好地组织和设计代码,提高代码的可读性、可维护性和可扩展性。 设计...
本书专门介绍Android源代码的设计模式,共26章,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。主要内容为:优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、...
利用工厂模式、装饰者模式、策略模式、责任链模式进行设计与实现。工厂模式完成办公椅不同种类的生成,装饰者模式完成给办公椅添加配件,策略模式完成不同打折算法的自动更替,责任链模式以及反射机制完成不同职位...
压缩包中包含了观察者模式,责任链模式以及包裹模式三个重要的设计模式的演示代码,是用java写的。非常适合初学设计模式的人学习,因为大多数的人学习设计模式只是停留在理论阶段,但是实际上需要自己去写出具体的...
describe:设计模式学习笔记 逻辑结构图 代码结构图 设计模式简述 创建型模式,共五种:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式,共七种:适配器模式,装饰器模式,代理模式,...
本书专门介绍Android源代码的设计模式,共26章,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。主要内容为:优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、...