意图
代理模式(Proxy)是指实现了一个类「代替」另外一个类的功能,它能控制对于原对象的访问。
大约 2 分钟
假设有一个对象,你希望生成与其完全相同的一个对象。正常情况下:
- 新建一个相同类型的对象
- 遍历原对象的属性,并设置新对象的属性
效率低,并且有时候原对象的某些属性是私有的。
抽象工厂也是一种工厂,跟简单工厂不同的是抽象工厂是创建一系列相关的对象,而无需指定具体的类。
而简单工厂只是决定用什么子类来实例化出的一个对象。
所谓的一系列相关的对象指的是你为了完成某个指令,需要用到A类型、B类型、C类型对象,但是为了保持风格的一致。对于A1、B1、C1是一种风格,而A1、B2、C1会导致风格会不一致。。
当你有一个复杂的对象需要创建时,生成器模式是让你能够逐步创建该复杂对象,从而生成不同形式的对象。
就像我们要画一个人,要有头、身体、手、脚。不管是什么类型的人,我们都会使用这四个相同的步骤:「画头」、「画脚」、「画手」、「画脚」。而每个部分也跟其他部分有不一样的参数,所以才有使用同样的构建过程可以创建出不同的表示。
使用一个「单独的类」来实现具体的实例化过程,这个类就是一个「简单工厂类」,它可以决定应用什么子类来实例化。