建造者模式又叫生成器模式,它把复合对象复杂的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。即将产品的内部表象和产品的生成过程分割开来,从而使用一个建造过程生成具有不同内部表象的产品对象。
建造者模式和工厂模式的区别:
工厂模式:
有一个抽象工厂
实现一个具体工厂-汽车工厂
汽车工厂A生产汽车A,得到汽车A
汽车工厂B生产汽车B,得到汽车B
这样做实现了购买者和生产线的隔离,强调的是结果。
建造者模式:
引擎工厂生产引擎产品,得到汽车部件A
轮胎工厂生产轮胎产品,得到汽车部件B
底盘工厂生产底盘产品,得到汽车部件C
将这些部件组合在一起,得到汽车产品
这样做目的是为了实现复杂独享生产线和其部件的解耦,强调的是过程。
就像建房子的步骤都是先造墙,再造窗户,最后造门,但是最后造出来的是公寓还是别墅,就要靠具体的细节实现了。
优点: 1、建造者独立,易扩展。 2、便于控制细节风险。
缺点: 1、产品必须有共同点,范围有限制。 2、如内部变化复杂,会有很多的建造类。
示例代码如下:
运行结果如下: