1、创建型设计模式
用来创建对象的模式,抽象了实例化过程。
(1)单例模式 (Singleton):保证一个类有且仅有一个实例,提供一个全局
访问点;
(2)工厂方法 (Factory Method):父类负责定义创建对象的公共接口,而
子类则负责生成具体对象,将类的实例化操作延迟到子类中完成;
(3)抽象工厂(Abstract Factory):为一个产品族提供统一的创建接口。当
需要这个产品族的某一系列的时候,可以从抽象工厂中选出相应的系列创建一个
具体的工厂类;
(4)建造者模式 (Builder):将复杂对象的构建与它的表示分离,同样的构
建过程可以创建不同的表示。允许用户可以只通过指定复杂对象的类型和内容就
可以构建它们,用户不知道内部的具体构建细节;
(5)原型模式 (Prototype):通过“复制”一个已经存在的实例来返回新的
实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定
制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个
已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数
据。
2、结构型设计模式
结构型模式讨论的是类和对象的结构,它采用继承机制来组合接口或实现
(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构型模
式)。
(1)合成(Composite)模式:定义一个接口,使之可以用于单一对象,也
可以应用于多个单一对象组成的对象组;
(2)装饰(Decorator)模式:动态给一个对象添加一些额外的职责,就好
像给一个物体加上装饰物,完善其功能;
(3)代理(Proxy)模式:在软件系统中,有些对象有时候由于跨越网络或
者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统
带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,
让代理对象来代替目标对象打点一切,这就是代理(Proxy)模式;
(4)享元(Flyweight)模式:Flyweight 是一个共享对象,它可以同时在
不同上下文(Context)使用;
(5)外观(Facade)模式:外观模式为子系统提供了一个更高层次、更简
单的接口,从而降低了子系统的复杂度和依赖。这使得子系统更易于使用和管理。
外观承担与子系统中类交互的责任;
(6)桥梁(Bridge)模式:桥梁模式的用意是将问题的抽象和实现分离开
来实现,通过用聚合代替继承来解决子类爆炸性增长的问题;
(7)适配器(Adapter)模式:将一个类的接口适配成用户所期待的接口。一
个适配器允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将
类自己的接口包装在一个已存在的类中。
3、行为型设计模式