概念:建造者模式又名生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节。
优点:(1)产品的建造和表示分离,实现了解耦。
(2)隐藏了产品的建造细节,用户只需关心产品的表示,而不需要了解是如何创建产品的。
(3)体现了开闭原则,如果需要再生产其他共享单车,只需要再开一条生产线即可,不影响其他生产线的作业。
缺点:(1)建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。
(2)当建造者过多时,会产生很多类,难以维护。
抽象工厂模式VS建造者模式
抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不同分类维度的产品组合,采用抽象工厂模式不需要关心构建过程,只关心什么产品由什么工厂生产即可。而建造者模式则是要求按照指定的蓝图建造产品,它的主要目的是通过组装零配件而产生一个新产品。如果将抽象工厂模式看成汽车配件生产工厂,生产一个产品族的产品,那么建造者模式就是一个汽车组装工厂,通过对部件的组装可以返回一辆完整的汽车
实现:Product(产品角色):一个具体的产品对象。
Builder(抽象建造者):创建一个Product对象的各个部件指定的抽象接口。
ConcreteBuilder(具体建造者):实现抽象接口,构建和装配各个部件。
Director(指挥者):构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。
实例:生产一个KFC套餐,需要主食和饮料等。生产一辆汽车,需要车轮,车身,发动机等。
(1)Product(产品角色)
(2)Builder(抽象建造者):创建一个Product对象的各个部件指定的抽象接口。
(3)ConcreteBuilder(具体建造者):实现抽象接口,构建和装配各个部件。
(4)Director(指挥者):构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象,它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。
(5)测试