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

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

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)

优点:

缺点:

使用场景:

举例:

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

时间: 2024-08-30 10:22:45

设计模式之责任型接口型模式的相关文章

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

摘要: 原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6508967.html 之前认真学习了Java设计模式中的四大接口型模式,分别为:适配器模式(Adapter).外观模式(Facade).合成模式(Composite).桥接模式(Bridge). 1.在此处再温习一下四种设计模式: (1)适配器模式: 我们能够访问的类中不存在我们要访问的内容时,就可以使用这个适配器模式,当然就类而言,其实不存在什么不能被访问,这里的不能访问都是人

设计模式之接口型模式

今天来总结一下接口型模式下的第一个设计模式--------接口型模式. 1.首先来说什么是接口型模式? 答:接口型模式就是利用接口规范类之间的行为使得实现该接口的类可以遵循代码的注释.测试和其他的文档说明,使用接口可以对一个类或者一组类的方法进行定义或者重定义.使用接口型模式的好处就是使得接口和实现分离,不会有相互的影响,并且使得代码更加的清晰明了. 2.接口和抽象类的区别有哪些? 答:a.接口是被实现的,使用的关键字是implements,而抽象类是被继承的,使用的关键字是extends. b

并行设计模式(二)-- Master-Worker模式

Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Master-Worker模式,关于其他多线程设计模式的地址如下: 关于Future模式的详解:并行设计模式(一)-- Future模式 关于Guarded Suspeionsion模式的详解:并行设计模式(三)-- Guarded Suspeionsion模式 关于不变模式的详解:并行设计模式(四)--

Java设计模式(十) 备忘录模式 状态模式

(十九)备忘录模式 备忘录模式目的是保存一个对象的某个状态,在适当的时候恢复这个对象. class Memento{ private String value; public Memento(String value){ this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } class Storage

并行设计模式(一)-- Future模式

Java多线程编程中,常用的多线程设计模式包括:Future模式.Master-Worker模式.Guarded Suspeionsion模式.不变模式和生产者-消费者模式等.这篇文章主要讲述Future模式,关于其他多线程设计模式的地址如下: 关于Master-Worker模式的详解:并行设计模式(二)-- Master-Worker模式 关于Guarded Suspeionsion模式的详解:并行设计模式(三)-- Guarded Suspeionsion模式 关于不变模式的详解:并行设计模

重温设计模式(一)—代理模式

通过这次设计模式的交流,发现无论是技术上还是思想上需要提升的空间还有很多.收获比预期的要多的多.给我触动最深的就是以下几点: 1. 面向对象的精华:抽象.封装.继承.多态 2.设计模式六大原则的运用:单一职责.开闭原则.合成聚合.依赖倒装.里氏代换.迪米特 3.让自己思绪飞翔-大胆的去想象,只有去想了.做了,你才知道最后的结果 初次学习代理模式的博文:http://blog.csdn.net/gxq741718618/article/details/8781099 下面用另外一种愉快的心情了解一

C#设计模式系列:简单工厂模式(Simple Factory)

1.简单工厂模式简介 1.1>.定义 简单工厂模式定义一个Factory类,可以根据参数的不同返回不同类的实例,被创建的实例通常有共同的父类. 简单工厂模式只需要一个Factory类. 简单工厂模式又称为静态工厂模式,Factory类为静态类或包含静态方法. 1.2>.使用频率  中 2.简单工厂模式结构 2.1>.结构图 2.2>.参与者 简单工厂模式参与者: ◊ Product:抽象产品类,将具体产品类公共的代码进行抽象和提取后封装在一个抽象产品类中. ◊ ConcretePr

设计模式学习03—抽象工厂模式

1.动机与定义 工厂模式中,一个工厂仅仅能提供一个或一类产品,当产品种类较多,形成产品系列(比方我们要创建跨平台的button,菜单,文本框等等一系列GUI控件: 单纯使用工厂模式会产生大量工厂,并且后期维护也不方便,我们能够从产品中找到规律,假设产品等级相对固定,以后仅仅会新增产品族,那么我们就能够把整个产品族放到一个工厂创建,以后新增其它系统产品族也很方便,例如以下图: 这样的模式就是抽象工厂,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则须要面对多个产品等级结构,一个工厂等级结构能

Java设计模式(五)外观模式 桥梁模式

(九)外观模式 外观模式为子系统提供一个接口,便于使用.解决了类与类之间关系的,外观模式将类之间的关系放在一个 Facade 类中,降低了类类之间的耦合度,该模式不涉及接口. class CPU { public void startup(){ System.out.println("cpu start"); } public void shutdown(){ System.out.println("cpu stop"); } } class Memory { pu