创建型模式学习总结——设计模式学习笔记
一 创建型模式
1 创建型模式抽象了实例化的过程
将对象的创建,组合,表示独立于系统。一个类创建型模式使用继承来改变被实例化的对象,
一个对象的创建型模式是将实例化委托给另一个对象,以避免硬编码(hard_coding)带来了的不可扩展和不能灵活应对变化,
而来降低对象之间关系的重新更改或者组合或者复合所带来的复杂性。
创建型模式是解决对象实例化问题:由谁创建,怎么创建……
二 创建型模式之间的比较
1 AbstractFactory模式:
提供一个创建一系列相关或者相互依赖对象的接口,而无需制定他们具体的类。
将一个完整的产品创建,委托给AbstractFactory,将完整产品拆分成许多相关或者相互依赖的部分,
各部分产品都是可以继续扩展变化,AbstractFactory需要提供的是一个完整产品创建中各个部分产品创建的接口。
Client需要使用这些接口创建产品各个部分的,以便组合成一个完整对象。所以AbstractFactory体现了一种部分与整体的关系。
2 Build模式:
将一个复杂对象的构建与它的表示分离,使得同样的创建过程可以创建不同的表示。
复杂对象的构建,体现在就是使用一个导向器(Ditector),作用就是创建对象的各个部分对于不同的Builder,
之间存在的差别相对较大,Director就是封装了这种复杂性,使得同样的过程,处理不同的复杂逻辑,但是得到不同的表示。
3 FactoryMethod模式:
定义一个用于创建对象的接口,让子类去决定实例化那一个类。使一个类实例延迟到其子类。
这个说法真实让人难以理解,前面几个模式似乎都可以实现其所描述的功能:子类决定实例化那一个类。
可能FactoryMethod更专注于独立对象的创建,使用子类仅仅是创建对象,这些对象可以是相关的或者无关的,或者是具有相同意义的……
4 Prototype模式:
用原型实例制定创建对象的种类,并且通过拷贝这些原型实例创建新的对象。
通过自身创建一个新的对象,这在什么样的情况下才是需要的呢?这个着实让人难以理解。
想象为什么复制能让某些操作变得简单……但这在实际代码中却不是copy那么回事那么简单?
可能是在框架中会有使用,来简化相似对象的创建和初始化工作,或者扑捉某对象运行时刻的信息……
5 Singleton模式:
保证一个类仅有一个实例,并提供一个它的全局访问点。
对这些模式理解尚浅,纯属个人偏见,请多指教!