设计模式03——建造模式、原型模式
建造模式
重点:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
应用场景:
1、需要生成的产品对象有复杂的内部结构,每一个内部成分本身可以是对象,也可以仅仅是一个产品对象的组成成分
2、需要生成的产品对象的属性互相依赖,建造模式可以强制实行一种分步骤进行的建造过程
3、在对象创建过程中会使用系统中的其他对象,这些对象在产品创建过程中不易得到
应用示例:
1、发送订阅邮件和发送取消订阅邮件,可以使用建造模式构建邮件的内容
2、游戏场景中,根据用户选的高低配置加载不同的图像背景
原型模式
应用场景:
1、假设一个系统的产品类是动态加载的,而且产品类具有一定的等级结构。这个时候如果采取工厂模式的话,工厂类就不得不具有一个相应的等级结构。而产品类的等级结构一旦变化,工厂类的等级结构就不得不对应变化。这对于产品结构可能会经常变化的系统来说,采用工厂模式就不方便。如果采取原型模式,给每一个产品类配备一个克隆方法(大多数时候只需给产品类等级结构的根类配备克隆方法),便可以避免使用工厂模式所带来的具有固定等级结构的工厂类。这样,一个使用了原型模式的系统与它的产品对象是怎么创建出来,以及这些产品对象之间的结构是怎样的,以及这个结构会不会发生变化,是没有关系的。
2、new一个对象的成本很高时,可以考虑通过cloneable接口拷贝对象
优点:适用于任何等级结构
缺点:
1、每一个类都必须配备一个克隆方法,配备克隆方法需要对类的功能进行通判考虑,这对于全新的类来说不是很难,而对于已有的类不一定很容易,特别是当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候
2、如果有对象引用,一般采用深拷贝方案,否则多个副本引用了同一个对象,这么操作也提高了复杂度
posted on 2021-06-19 19:10 jacky_bear 阅读(47) 评论(0) 编辑 收藏 举报