zl程序教程

您现在的位置是:首页 >  其他

当前栏目

设计模式之建造者模式

2023-04-18 13:12:48 时间

建造者模式

定义:生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。

如果你有一个需求:

你需要建造一座豪华别墅,需要安装泳池、暖气、和田玉地板、供电、宽带等。

方案一

  • 按最简单的思路来,你可以在规划别墅时把可能所需的条件准备妥当(在类中加入所需属性),建造即可(通过构造方法创建一个对象,将所需条件放入构造方法),这样做可以满足需求,显然有一个弊端便是:构造方法代码量高,且可能会出现很多属性为Null的情况。

方案二

  • 你可以创建一个House父类,在此基础上,根据客户的需求再创建其子类。这样做的缺点是:代码过于复杂。

建造者模式解决方案

将对象构造代码从产品类中抽取出来, 并将其放在一个名为生成器的独立对象中。

建造者的角色

生成器 (Builder)

​ 接口声明在所有类型生成器中通用的产品构造步骤。

具体生成器 (Concrete Builders)

​ 提供构造过程的不同实现。 具体生成器也可以构造不遵循通用接口的产品。

产品 (Products)

​ 最终生成的复杂对象(为客户定做的别墅)。这些产品类并不一定有共同的接口,完全可以是不相关联的。

主管 (Director)

​ 定义调用构造步骤的顺序, 这样你就可以创建和复用特定的产品配置。

客户端 (Client)

​ 必须将某个生成器对象与主管类关联。(主管知道需要哪些创建步骤才能获取正常使用的产品) 一般情况下, 你只需通过主管类构造函数的参数进行一次性关联即可。 此后主 管类就能使用生成器对象完成后续所有的构造任务。 但在客户端将生成器对象传递给主管类制造方法时还有另一方式。 在这种情况下, 你在使用主管类生产产品时每次都可以使用不同的生成器。

talk is cheaper,show me your code.

分步制造汽车,生成器模式允许你分步骤地制造不同型号的汽车。