设计模式之第13章-职责链模式(Java实现)

  “请假都那么麻烦,至于么。”“咋的了?”“这不快过年了么,所以我想早两天回去,准备一下,买买东西什么的,然后去给项目经理请假,但是他说快过年了,所以这个事儿他没法决定,所以只能找总经理了,你说麻不麻烦。”“这不是很正常么,现在好多事不都是这样的,尤其是那些大公司,制度完善,分工更加细致,层级多,更麻烦。不过这就牵扯到今天的职责链模式了。”“什么?这都能扯到传说中的职责链模式?”

职责链模式之自我介绍

  当当当当~我就是人见人耐,花见花开,车见车爆胎的职责链是也。人们都我的定义是:Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.Chain the receiving objects and pass the request along the chain until an object handles it.意思是:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。职责链重点在“链”上,由一条链去处理相似的请求在链中决定谁来处理这个请求,并返回相应的结果,它的通用类图是: 设计模式之第13章-职责链模式(Java实现)

  至于类图的含义么,讲的这么清楚的图我就不再赘述了。(作者按:挺好,颇有我的风格。众人:被作者带坏的某人。)

职责链模式之自我分析

  我呢,比他们差远了,因为印象中我好像全是缺点的说。(场下响起热烈的掌声。众人:看看,人家多谦虚,哪像前面几个,都声称自己毫无缺点,谁信啊,哪有那么完美的存在,俗话说:不存在银弹的好吗。躺枪的某些模式们。)我的缺点嘛,如下:

  • 性能不是很好,由于从链头开始遍历,因此链比较长的时候性能问题将会暴漏。
  • 调试不便。链长后所带来的问题。
  • 不保证被接受。若无明确的接受者,无法保证一定被处理。

  突然想起来貌似还是有那么一丢丢优点的:

  • 降低耦合度。
  • 增强了给对象指派职责的灵活性。

职责链之实现

  我们就以大家常见的请假来具体实现一下职责链模式。首先是员工,也就是程序员的接口:

1 public interface IEmployee{
2     //获取请求级别
3     public int getType();
4     //获取个人请示
5     public String getRequest();
6 }

  接下来是员工的具体实现类:  

 1 public class Employee implements IEmployee{
 2     //请假
 3     private String request = "";
 4     //请求级别
 5     private int type = 0;
 6 
 7     public Employee(String req, int type){
 8         this.req = request;
 9         this.type = type;
10     }
11 
12     public int getType(){
13         return this.type;
14     }
15 
16     public String getRequest(){
17         return this.request;
18     }
19 }
View Code

相关文章:

  • 2021-08-28
  • 2022-12-23
  • 2021-07-27
  • 2021-07-19
  • 2022-12-23
  • 2021-09-01
  • 2021-12-09
猜你喜欢
  • 2022-12-23
  • 2021-12-24
  • 2021-09-14
  • 2021-06-03
  • 2021-10-30
相关资源
相似解决方案