建造者模式
定义:生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。
如果你有一个需求:
你需要建造一座豪华别墅,需要安装泳池、暖气、和田玉地板、供电、宽带等。
方案一
- 按最简单的思路来,你可以在规划别墅时把可能所需的条件准备妥当(在类中加入所需属性),建造即可(通过构造方法创建一个对象,将所需条件放入构造方法),这样做可以满足需求,显然有一个弊端便是:构造方法代码量高,且可能会出现很多属性为Null的情况。
方案二
- 你可以创建一个House父类,在此基础上,根据客户的需求再创建其子类。这样做的缺点是:代码过于复杂。
建造者模式解决方案
将对象构造代码从产品类中抽取出来, 并将其放在一个名为生成器的独立对象中。
建造者的角色
生成器 (Builder)
接口声明在所有类型生成器中通用的产品构造步骤。
具体生成器 (Concrete Builders)
提供构造过程的不同实现。 具体生成器也可以构造不遵循通用接口的产品。
产品 (Products)
最终生成的复杂对象(为客户定做的别墅)。这些产品类并不一定有共同的接口,完全可以是不相关联的。
主管 (Director)
定义调用构造步骤的顺序, 这样你就可以创建和复用特定的产品配置。
客户端 (Client)
必须将某个生成器对象与主管类关联。(主管知道需要哪些创建步骤才能获取正常使用的产品) 一般情况下, 你只需通过主管类构造函数的参数进行一次性关联即可。 此后主 管类就能使用生成器对象完成后续所有的构造任务。 但在客户端将生成器对象传递给主管类制造方法时还有另一方式。 在这种情况下, 你在使用主管类生产产品时每次都可以使用不同的生成器。
talk is cheaper,show me your code.
分步制造汽车,生成器模式允许你分步骤地制造不同型号的汽车。