建造者模式:
1)客户端不必知道产品内部的组成细节,将产品本身于产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象
2)用户者使用不同的具体建造者即可以得到不同的产品对象
3)可以更加精细地控制产品的创建过程
4)增加新的具体建造者无须修改原有类库的代码,指挥者类针对抽象建造者类编程,系统扩展方便,符合"开闭原则"。
四个角色:
Product产品角色:一个具体的产品对象
Builder 抽象建造者: 创建一个product对象的各个部件指定的接口/抽象类
ConcreteBuilder具体建造者 实现接口 构建和装配各个部件
Director 指挥者 构架一个使用Builder接口的对象,一是隔离了客户与对象的生成过程,二是负责控制产品对象的生产过程。
jdk源码中的建造者模式角色分析:
StringBuilder即充当了指挥者角色,同时充当了具体的建造者,建造方法的实现是由AbsractStringBuilder完成,而StringBuilder继承了AbstractStringBuilder.
ps 建造者模式与抽象工厂模式的区别:
抽象工厂模式不关系构建的过程,只关系什么产品 由射门工厂生产;
建造者模式关系具体的构建过程,主要是通过组装零件产生一个新的产品。
网友评论