1. 简介
建造者(Builder)模式又称
生成器模式,属于创建型模式。在软件的设计中,我们可能经常会遇到需要构建某个复杂的对象(比如在游戏开发中,进行人物角色的构建),建造该对象的“过程”是稳定的(对于一个人设来都有身体,脸,发型,手脚等),而具体建造的“细节”是不同的(每个人设的身体,脸等各有千秋)。但对于用户来讲,我才不管这些,我只想告诉你,我现在需要某个对象(拥有某特征的人物角色),于是你就创建一个给我就行了。
如果你需要将一个复杂对象的 构建与它的表示分离,使得同样的构建过程可以创建不同的表示的意图时,我们需要应用于一个设计模式,“建造者(Builder)模式”,又叫生成器模式。建造者模式可以将一个产品的内部表象与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们使用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。
2. 结构
此模式的结构图如下所示:
- Builder:是为创建一个Product对象的各个部件指定的抽象接口。
- ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件。
- Director:构建一个使用Builder接口的对象。
- Product:表示被构建的复杂对象。
客户创建Director对象,并用它所想要的Builder对象进行配置;一旦产品部件被生成,导向器就会通知生成器;生成器处理导向器的请求,并将部件添加到该产品中;客户从生成器中检索产品。
3. 实例分析
考虑这么一个应用场景:例如我们正在开发某个游戏程序,其中就需要进行人物的构建。整个游戏中的人设可谓五花八门,不同的游戏场景下,需要的人设有所不同,但是这些人设的组成却是相似的过程,每个人设都需要有头部、身体、手脚等。
我们知道一个游戏的人设就是一个复杂的对象,在构建出一个人设时我们需要相应的人设的头部、发型、身体、手脚、服饰等来组成我们需要的人设。我们对人设时如何创建的过程和细节不感兴趣,我们所 需要的是指定某种类型的人设就可以得到它们。
我们仔细分析会发现&