建造者模式
建造者模式(Builder Pattern)又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
它是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建他们,用户不需要知道内部的构具体建细节。
例如:用户需要一台宝马汽车,而我们有方向盘,轮胎,发动机等,我们只需要将他们组装起来给用户,而用户不需要知道方向盘这些是怎么做出来的。
建造者模式的四个角色:
- Product(产品角色):一个具体的产品对象。
- Builder(抽象建造者):创建一个Product对象的各个部件指定的接口。
- ConcreteBuilder(具体建造者):实现接口,构建和装配各个部件。
- Director(指挥者):构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。
作用:一、隔离了客户与对象的生产过程。二、负责控制产品对象的生产过程。
Product:产品,比如说你要构建一个普通房子亦或者是别墅,那么product就是普通房子或者别墅。
Builder:建造房子的各个部分的抽象接口,如地基,房梁,屋顶,墙等。
Director:构建者,如,当你需要建造一个普通房子的时候你就要和director说,然后它就会帮你组装好各个部分,把一个完整的房子交到你手里。
ConcreteBuilder:具体的构建者,比如说房子的地基打多深,房梁怎么做,屋顶怎么盖,墙有多厚等(可以多个,如普通房子,别墅等)。
调用顺序:cline > CommonHouse/HighBuilding > HouseDirector
所以说, 建造者模式适用于,当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。