建造者模式
1、什么是建造者模式
官方:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
个人理解:创建对象时,使用者提供决策,建造者来具体创建对象,一步一步创建对象。
举个例子,我们要调用构造者造个房子,我要厨房,欧美风格,客厅,采用中式风格,构建者就会根据这些来构建属性风格,属性内容由调用者决定,构建的过程由建造者决定。最终获取的这个对象,是由决策者决定的,但制作的过程,决策者没必要知道。
思考:其实我感觉“复杂”在这里,有点疑惑,复杂情况下使用,简单的为啥就不能用,简单的用工厂,复杂的用建造者,也许使用上,基本上是这种情况,但把这个概念放在建造者者描述里,感觉不太好,建造者的好处是其建造的过程,没必要被知道。
2、建造者模式好处
从上面的描述可以看出,在构建对象的时候,可以通过改变对象属性组件内容,获取我想要的对象,这个构建过程基本上不会变,我们就可以采用建造者模式。
3、建造者模式结构
建造者(Builder)模式的主要角色如下。
- 产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。
- 抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。
- 具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。
- 指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。
4、建造者模式与工厂模式区别
工厂模式和建造者模式想要的都是一个结果对象
他们的区别是这个对象里的属性组件。工厂模式,根据条件可以获取想要的的对象,这些对象属性都是相同的。建造者创建的对象,可以将属性抽象化,可以通过调整建造方式,改变里面的具体属性类型,得到想要的对象。工厂模式,仅仅创建对象,建造者模式,还要可以改变对象的属性组件。
5、引用文章
(1)、http://c.biancheng.net/view/1354.html
(2)、https://www.runoob.com/design-pattern/builder-pattern.html
作者:张九星
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。