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

Posted vam8023

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之责任型接口型模式相关的知识,希望对你有一定的参考价值。

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

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)

优点:

缺点:

使用场景:

举例:


以上是关于设计模式之责任型接口型模式的主要内容,如果未能解决你的问题,请参考以下文章

Java设计模式之接口型模式总结

设计模式之接口模式

设计模式之接口模式

设计模式的六大原则

Python的行为设计模式之责任链模式

责任链模式