构建者设计模式-Builder
2020-10-26 本文已影响0人
baixin
1.定义
又称生成器设计模式,它是将一个复杂对象的构建(属于稳定部分或抽象)
与它的表示(属于变化部分或具体实现)
分离,使得同样的构建过程可以创建不同的表示。
2.动机
在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法(程序)构成; 由于需求的变化(构建过程和具体实现的变更原因和变更速率不同),这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定;
3.结构图
构建者设计模式结构图Director和Builder有时候可以合并(合并后有点类似于模板方法设计模式),根据类的复杂度来区分要不要合并
4.适用性
在以下情况下使用Builder模式:
- 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时;
- 当构造过程必须被构造的对象有不同的表示时;
5.协作(构建流程)
- 客户端创建Director对象,并用它所想的Builder对象中的操作进行配置
- 一旦生成了产品部件,导向器就会通知生成器
- 生成器处理导向器的请求,并将部件添加到该产品中
- 客户从生成器中检索产品
6.总结
- Builder模式主要用于“分步骤构建一个复杂的对象”。这里的“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化(属于不稳定的);
- 变化点在哪里,封装在哪里(把变化点隐藏起来,如用一个函数、方法或对象来封装)——Builder模式主要在于应对“复杂对象各个部分”的频繁需求变动。其缺点在于难以应对“分步骤构建算法”的需求变动