两工厂、一原型、一单例、一生成器
Abstract Factory:抽象工厂、工厂模式
Factory Method:工厂方法
Singleton:单件、单例
Prototype:原型
Builder:生成器
在不同的业务场景下使用恰当的创建模式,可以使业务逻辑更清晰、节省开销、加强控制、分段控制实例的创建
工厂模式和工厂方法:
- 相同点和不同点:都强调了产品的一致性,区别在于它们的实现规模不同,工厂模式针对的是一系列组件、一个产品类库。工厂方法针对的只是一个产品。
- 业务场景:程序员需要的是产品A、B,他调用的的AbstractProductA、AbstractProductB的接口,然后由虚拟工厂AbstractFactory的实例工厂ConcreteFactoryC或者ConcreteFactoryD去生产。生产CA+CB或者DA+DB。
原型:
- 通过克隆来创建新的对象,节省对象的创建时间
- Prototype 协议中定义-clone方法,-clone中alloc+init创建新的对象,但属性通过copy来赋值
- 注意深浅拷贝,一般复杂的对象都是深拷贝,因为复制的对象和原型要相互独立。
单例
- 用于全局共享数据,封装公共的方法,方便监听数据变化。避免全局变量污染命名空间。
- 生成绝对单例,shareInstance+allocWithZone+copy+mutableCopy
生成器
- GameCharacterBuilder,包含GameCharacter属性。Builder的init方法中创建了Character实例,builder提供对应character的属性的setter方法,返回自身链式调用。Director可以做进一步封装,接收builder返回character
- 构造的过程中允许返回的对象有不同的表示,这个不同表示可以通过类型或属性来体现,所以你构造的过程中可能会返回任意的类型实例。
- 创建对象的过程经过复杂的算法,将这个算法与对象分开,提供装配,分阶段赋
- 业务示例:筛选项对象,根据传入的不同类型,给筛选项对象的一部分赋值,这个过程中筛选项对象的表示不同。生成组件配置SectionArr,创建的过程中会生成不同的对象。












网友评论