设计模式大汇总,是时候来复习一波了

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jjjjjj123321/article/details/54140312

如果说在开发过程中有什么需要反复学习的,设计模式无疑排在第一位!


这段时间开始复习设计模式,所以,做了一个汇总,希望能够时不时进行查阅复习一下

仅针对了解设计模式的目标用户,如果还不了解,建议花些时间系统的学习一下


观察者模式
描述:
有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
用法:
抽象主题(Subject):抽象类或接口,定义统一接口
具体主题(ConcreteSubject):具体类,用来处理订阅,取消订阅,以及通知观察者的功能
抽象观察者(Observer):抽象类或接口,定义统一通知接口
具体观察者(ConcreteObserver):具体类,处理具体通知后逻辑等
图示:





适配器模式
描述:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
用法:
目标接口(Target):抽象类或接口,客户端需要接的
需要适配的类(Adaptee):需要适配的类或适配者类。
适配器(Adapter):通过包装一个需要适配的对象,把Adaptee转换成Target。
图示:




简单工厂模式
描述:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。
用法:
工厂类(Simple Factory): 只包含了创建具体产品的静态方法。
抽象产品(Product):定义简单工厂中要返回的产品。
具体产品(ConcreteProduct):具体产品。
图示:




工厂方法模式
描述:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。相比于简单工厂模式,每个子类都专门负责生产一个产品
用法:
抽象工厂(Creator):这个抽象类(或接口)声明一个创建对象的工厂方法,用来返回一个Product类型的对象。
具体工厂(ConcreteCreator):重定义工厂方法,返回一个具体的Concrete Product实例。
抽象产品(Product):定义工厂方法所创建的对象。
具体产品(ConcreteProduct): 具体产品,继承自Product抽象类。
图示:




单例模式
描述:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
用法:
1,懒汉式:它在需要对象的时候,才判断是否已有对象,如果没有就立即创建一个对象,然后返回,如果已有对象就不再创建,立即返回。
2,饿汉式:该单例类非常饿,迫切需要吃东西,所以它在类加载的时候就立即创建对象。
其中懒汉式有线程安全的问题,需要注意!


代理模式
描述:
如果直接访问对象比较困难,或直接访问会给使用者或系统带来一系列问题。这样对于客户端(调用者)来说,就不需要直接与真实对象进行交互,解除了调用者与真实对象的耦合。
用法:
抽象实体(Subject):定义了真实实体(RealSubject)和代理(Proxy)的公共接口,这样就在任何时候使用真实实体(RealSubject)的地方使用代理(Proxy)。
代理(Proxy):保存一个引用使得代理可以直接访问真实实体,并提供一个与Subject的接口相同的接口,这样代理就可以代替真实实体。
真实实体(RealSubject):定义Proxy所代表的真实实体。
图示:




装饰模式
描述:
动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。
用法:
抽象构建(Component):定义一个抽象接口,用以给这些对象动态地添加职责。
具体构建(ConcreteComponent):定义一个具体的对象,也可以给这个对象添加一些职责。
装饰类(Decorator): 装饰抽象类,继承了Component,从外类来扩展Component类的功能。
具体装饰者(ConcretorDecorator):负责给构建对象添加职责。

图示:




建造者模式
描述:
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。
用法:
建造者(Builder):为创建一个产品对象的各个部件指定抽象接口。
具体建造者(ConcreteBuilder):实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。
指挥者(Director):指挥并构造一个使用Builder接口的对象。
产品(Product):表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
图示:




未完待续


本文所有类图引用博主:http://www.cnblogs.com/wangjq,在此表示感谢!



猜你喜欢

转载自blog.csdn.net/jjjjjj123321/article/details/54140312