建造者模式-Builder Pattern
来源:互联网 发布:成都亦知科技有限公司 编辑:程序博客网 时间:2024/06/03 23:32
意图:
将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
主要解决:
主要解决在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
何时使用:
一些基本部件不会变,而其组合经常变化的时候。
如何解决:
将变与不变分离开。
关键代码:
建造者:创建和提供实例,导演:管理建造出来的实例的依赖关系。
应用实例:
- 去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的”套餐”。
- JAVA 中的 StringBuilder。
优点:
- 建造者独立,易扩展。
- 便于控制细节风险。
缺点:
- 产品必须有共同点,范围有限制。
- 如内部变化复杂,会有很多的建造类。
使用场景:
- 需要生成的对象具有复杂的内部结构。
- 需要生成的对象内部属性本身相互依赖。
注意事项:
与工厂模式的区别是:建造者模式更加关注与零件装配的顺序。
通用类图:
通用源码:
产品类
public class Product { public void doSomething(){ //独立业务处理 }}
抽象建造者
public abstract class Builder { //设置产品的不同部分,以获得不同的产品 public abstract void setPart(); //建造产品 public abstract Product buildProduct();}
具体建造者
public class ConcreteProduct extends Builder { private Product product = new Product(); //设置产品零件 public void setPart(){ /* * 产品类内的逻辑处理 */ } //组建一个产品 public Product buildProduct() { return product; }}
导演类
public class Director { private Builder builder = new ConcreteProduct(); //构建不同的产品 public Product getAProduct(){ builder.setPart(); /* * 设置不同的零件,产生不同的产品 */ return builder.buildProduct(); }}
转载来源:
http://www.runoob.com/design-pattern/builder-pattern.html
http://www.uml.org.cn/oobject/201404035.asp
阅读全文
0 0
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 建造者模式【BUILDER PATTERN 】
- 建造者模式【Builder Pattern】
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 建造者模式-Builder Pattern
- 建造者模式Builder Pattern
- 建造者模式Builder Pattern
- 建造者模式(Builder Pattern)
- Builder Pattern(建造者模式)
- 建造者模式【Builder Pattern】
- 建造者模式(Builder Pattern)
- 建造者模式【Builder Pattern】
- 建造者模式(Builder Pattern)
- 建造者模式(builder pattern)
- 资源
- 在CentOS7.4中使用Vsftpd搭建FTP服务器
- FL Studio中的Layer控制器之如何叠加音色
- 算法作业系列11——Decode Ways
- c# 两数相除的三种取整方式 1.向上取整 2.向下取整 3.四舍五入
- 建造者模式-Builder Pattern
- Android:ApplicationContext 与 非Context 在区别图
- Altium Designer -- 精心总结
- 进程管理API之task_tgid_nr_ns
- table 中 点击某行,获取这一行的数据弹框显示,或进行其他的操作
- J2EE开发模型分析
- css sprites的学习
- java 生成读取 google protobuf 2.4.1 dome
- java中的枚举类和常量类的区别