什么是建造者模式?
构造者模式(Bulder Pattern):将一个复杂对象的构建与表示分离,使得同样的构建可以创建不同的表示。
为什么使用建造者模式?
“复杂对象相当于一辆有待建造的汽车,而对象的属性相当于汽车的部件,建造产品的过程就相当于组合部件的过程。由于组合部件的过程很复杂,因此,这些部件的组合过程往往被“外部化”到一个称作建造者的对象里,建造者返还给客户端的是一个已经建造完毕的完整产品对象,而用户无须关心该对象所包含的属性以及它们的组装方式,这就是建造者模式的模式动机。”(引用自图说设计模式)
怎样实现建造者模式?
建造者模式包含四个角色:指挥者,建造者,抽象建造者,产品。
1. 建造者模式的具体流程如下: 指挥者将客户端创建产品的请求划分为各个部件的创建请求,再将这些请求委派到具体的建造者角色,具体的建造者角色完成具体的产品,而这个过程不为客户端所知。
2. 产品不需要抽象类,因为由于可能最终创建出来的产品差异很大,所以不大可能抽象出一个产品抽象类。
3. 抽象工厂模式解决的是“系列产品”的需求变化,而建造者模式解决的是“产品部分”的需求变化。
4. 建造者模式隐藏了具体产品的组装过程,所以要改变一个产品的内部表示,只需要再实现一个具体的构造者就行了,从而能够很好的应对产品组件的需求变化。(引用自learning hard的博文)
uml结构图(引用自learning hard的博文)