设计模式之创建型模式
Contents
单例模式
是保证一个类仅有一个实例,并提供一个访问它的全局访问点。
简单工厂模式
通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
工厂方法模式
定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。
抽象工厂模式
提供一个创建一系列相关或者相互依赖的接口,而无需指定它们具体的类。
原型模式
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
建造者模式
将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
- 简单工厂模式:一个工厂负责创建所有产品(多个类共用一个Create函数)
- 违反“开闭原则”,添加新产品需要修改工厂逻辑,工厂越来越复杂
- 工厂方法模式:一个工厂创建一个产品(每个类都有一个Create函数)
系统的可扩展性也就变得非常好,无需修改接口和原类
增加系统中类的个数,复杂度和理解度增加(一个具体产品就需要对应一个具体工厂)
- 抽象方法模式:一个工厂创建一系列(一个产品族)的产品(一个产品族一个Create)
增加新的产品族很方便,无须修改已有系统,符合“开闭原则”
增加新的产品等级结构麻烦,需要对原有系统进行较大的修改,违背了“开闭原则”
相当于在工厂方法模式的基础下进行了折中
对于产品族来说遵循了开闭原则
对于产品等级结构来说没有遵循开闭原则
如果产品结构等级稳定,那么就相当于完全遵循开闭原则