设计模式:(创建型、结构型、行为型)
一、Factory方法
定义一个用于创建对象的方法,让子类决定实例化哪一个类,Factory Method 使一个类的实例化延迟到其子类。主要用于基类中不知道它必须创建的对象的类(多个)。
二、抽象工厂
提供一个创建一系列抽象对象的接口,而无需要指定它们具体的类。创建某一类产品的工厂方法实现在一个具体的工厂中,通常一个具体的工厂是一个SingleTon。
三、Adapter/Wrapper
将一个类的接口转换成客户希望的另外一个接口,主要为了解决两个已有接口之间不匹配的问题。(在类已经设计好后实施,使两个已有的接口协同工作,而不是定义一个全新的接口)
三、 Bridge/Handle/Body
将抽象部分与它的实现部分分离,使它们都可以独立地变化,降低了对象间的耦合性。(在设计类之前实施)
四、Decorator/Wrapper
1. 可以动态、透明的给单个对象增加职责,避免了静态实现所有功能组合,从而导致子类急剧增加。
2. 组件、装饰器继承于一个抽象基类,装饰器类部包含一个抽象基类指针,根据需求,可以动态的传入各种不同的对象指针,可以是组件、装饰器或装饰器派生类,从而实现包装,包装可以反复迭代进行。
五、Facade 外观
定义一个高层的接口,对外屏蔽内部实现,降低系统的复杂性,降低(简化)模块之间的依赖关系。
六、 Composite组合
旨在构造类,使多个相关的对象能够以统一的方式处理,而多重可象可以被当作一个对象来处理,重要不在于修饰,而在于表示。
七、Proxy 代理
对一个对象进行访问控制的一个原因 是为了只有在我们确实需要这个对象时才对它进行创建和初始化。有远程代理、虚代理(图像)、保护代理、智能指针等工作场景。
八、Flyweight享元(以时间换空间)
Flyweight是一个共享对象,使得可以细粒度地使用它们而无需高昂的代价。
用两种方法来节约存储:1.用共享对象减少内部状态的存储 2. 用计算时间换取对外部状态的存储
九、Singleton 单例