码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之责任型接口型模式

时间:2018-02-24 16:50:33      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:更改   观察   修改   优点   .com   pos   接口型模式   single   结构   

责任型模式包括了:责任链模式、单例模式、观察者模式、中介者模式、代理模式和享元模式。

1、责任链模式(Chain of Responsibility)

为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。

优点:1、降低耦合度。它将请求的发送者和接收者解耦。 2、简化了对象。使得对象不需要知道链的结构。 3、增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。 4、增加新的请求处理类很方便。

缺点:1、不能保证请求一定被接收。 2、在找到正确的处理对象之前,所有的条件判定都要执行一遍,当责任链过长时,可能会引起性能的问题。

使用场景:一个系统的审批需要多个对象才能完成处理的情况下,例如请假系统等。或者代码中存在多个if-else语句的情况下,此时可以考虑使用责任链模式来对代码进行重构。

举例:请假经常会遇到,1天内直接跟你上司请,比如说经理;2天到5天内的话就要找副总裁处理;6天到10天的话就要总裁审批了,这个时候,如果你要递交请假申请,就要依据你的请假天数进行判断到底由谁来审批了,如果你要定义一个方法来处理请假审批的话,如果审批人的更改,或者请假天数与审批人的对应关系有变动,就需要进行代码的修改。而且如果审批流程过细,审批人过多,代码中就会存在很多if-else语句,这时候就使用责任链来实现。

第一步:创建请假的基本类型

技术分享图片

第二步:创建抽象的审批人类

技术分享图片

第三步:创建实现扩展了该审批人抽象类的实体类

技术分享图片

技术分享图片

技术分享图片

第四步:创建不同类型的审批人。赋予它们不同的审批级别,并在每个审批人中设置下一个审批人。每个审批人中的下一个审批人代表的是链的一部分。

技术分享图片

最后:发起请假流程

技术分享图片

输出:

 技术分享图片

 2、单例模式(Singleton)

 

优点:

缺点:

使用场景:

举例:

3、观察者模式(Observer)

优点:

缺点:

使用场景:

举例:

4、 中介者模式(Mediator)

优点:

缺点:

使用场景:

举例:

5、代理模式(Proxy)

优点:

缺点:

使用场景:

举例:

6、享元模式(Flyweight)

优点:

缺点:

使用场景:

举例:

设计模式之责任型接口型模式

标签:更改   观察   修改   优点   .com   pos   接口型模式   single   结构   

原文地址:https://www.cnblogs.com/Vam8023/p/8466007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!