关于责任链的学习,具体参考代码
最关键点就是面向接口的编程思想
抽象类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设计模式简介:主要是讲述...
以下是关于JAVA设计模式中提及的四种模式——工厂模式、代理模式、迭代器模式以及责任链模式的详细说明。 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建...
责任链模式是一种行为设计模式,它允许我们把请求沿着处理者链进行传递,直到某个处理者处理这个请求。这种模式让请求的发送者和接收者解耦,因为发送者无需知道哪个对象会处理请求,接收者也不知道其他处理者的存在...
在 Java 开发中,责任链模式是一种重要的行为设计模式,它可以解耦请求的发送者和接收者,使多个对象都有机会处理请求。本文将详细介绍责任链模式的意图、解释、编程示例、适用场景、实际应用、优点和权衡。同时,还...
责任链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。这种模式的主要优点是解耦了发送者和接收者之间的关系,使得系统更加灵活,...
责任链模式是一种行为设计模式,它允许我们定义一系列处理请求的对象,这些对象形成一个链,请求沿着这个链传递,直到某个对象能够处理它。这种方式使得我们可以将请求的发送者和接收者解耦,同时增加了系统扩展的...
本书主要面向已经具备一定面向对象编程基础的读者,旨在通过一系列设计模式的学习,提升读者在实际项目中的设计能力。 #### 核心内容解析 ##### 什么是设计模式? 设计模式是针对软件设计中出现的常见问题而提出...
责任链模式是一种设计模式,它允许我们把请求沿着处理者对象的链进行传递,直到某个对象处理这个请求。这种模式让请求的发送者和接收者解耦,因为发送者无需知道哪个对象会处理请求,而接收者也无需知道请求来自哪里...
本资源《设计模式:可复用面向对象软件设计基础》深入探讨了这一主题,并提供了相关的源码示例,便于学习者实践。 面向对象编程(OOP)是现代软件开发中的主流范式,它的核心思想是将复杂的问题分解为一系列相互...
责任链设计模式是一种行为设计模式,它允许将请求沿着处理者对象的链进行发送,每个对象都可以选择处理请求或将其传递给链中的下一个对象。在Java编程中,这种模式常用于构建灵活、可扩展的处理流程,比如在Spring ...
- 责任链模式:避免将处理逻辑硬编码到对象中,而是让对象组成一条链,并沿链传递请求。 - 命令模式:将命令封装为对象,以便使用不同的请求、队列或者日志来参数化其他对象。 - 解释器模式:提供一个语言的文法...
责任链模式(Chain of Responsibility)是一种行为设计模式,它允许我们定义一系列对象,每个对象都包含对请求的处理逻辑,请求沿着链进行传递,直到某个对象处理它。 OkHttp是一个高效的HTTP客户端库,由Square...
设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。这些模式在不同的场景下被反复验证并被广泛接受,为开发者提供了一种标准的、可复用的解决方案。在这个“设计模式之美”的学习笔记...
这个“设计模式学习ppt”资料包显然是一份面向初学者或大学生的教学资源,通过十四个PPT文件深入浅出地讲解了设计模式的各个方面。 首先,我们来看设计模式的基本概念。设计模式是对在特定上下文中反复出现的问题...
通过对这些设计模式的学习和应用,开发者能够更好地理解软件设计的原则,如单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则和接口隔离原则。这有助于编写出更具弹性、易于理解和维护的代码。在实际项目中,...
设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。这些模式都是经验丰富的开发者在实践中总结出的通用解决方案,可以帮助我们写出更灵活、可维护和可扩展的...
本资源“设计模式学习经典篇之菜鸟篇”旨在为初学者提供一个全面而通俗易懂的设计模式学习路径。 设计模式的核心在于重用已验证的解决方案,以提高代码的可读性、可维护性和可扩展性。根据GOF(Gamma, Helm, ...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。"设计模式可复用面向对象软件的基础"这一主题强调了设计模式在创建可维护、可扩展的面向对象软件中的核心作用。源码实现则为我们...