简介
内容
介绍用于创造对象的设计模式.用于处理类膨胀和多肽.
说明
- 类的创建有需要多需要注意的.
- 创建哪个,可以创建多少个,如何创建.
创建哪个
工厂模式,当函数的
if else
膨胀得特别大,就需要用抽象工厂,进行拆分.创建多少个
单例创建一个对象,建造者则用定长数组存放某个集合.
如何创建
一般建议用构造,但是拷贝构造在某些场景下效率更高.
工厂
说明
- 主要用于应对多肽,以及根据
key
来确定类型.好处
- 采用
key:value
映射的关系创建对应的类.- 主要的职责就是创建正确的对象.
- 改动较小.
劣势
- 当类变多的时候可能会导致工厂变得特别大.
抽象工厂
if else
分支特别多的时候,需要用抽象类进行拆分.一类工厂负责一类的创建,就有两层的抽象工厂了.
组合差异
- 工厂一般是根据
key
获取.- 组合则是
key
的变化与所在类本身无较大关联.可以各自独立变换.- 组合可以借助适配器,代理的方式完成工作.
单例
说明
- 主要用于构建类似集中管理类.
适用场景
- 只允许创建一个对象的场景.
安全性
- 需要保证并发访问安全,及多线程初始化的情况.
建造者
说明
- 主要用于构建基本组件变化,但是组合会发生变化的:套餐.
核心
- 将变化的抽象出来独自变化.
组合存储
- 组合根据不同的场景采用不同的数据结构。
- 链表,数组,集合,
map
.
拷贝
说明
- 对象之间赋值就存在类拷贝。
- 拷贝就有深拷贝和浅拷贝的区别。
浅拷贝。
memcpy
就可完成.深拷贝
- 需要递归才能完成,主要是拷贝所有关联的,主要是
new
出来的,即指针指向的内容也要拷贝.
总结
创造这里就是. 创建:哪个,多少,怎么建.
哪个:工厂,多少:单例和组合,怎么建:深浅拷贝.