设计模式之Builder

来源:互联网 发布:JS在区间内取随机数 编辑:程序博客网 时间:2024/05/21 17:53

知识点:
建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
UML图如下:
这里写图片描述
建造者模式通常包括下面几个角色:

  1. builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。

  2. ConcreteBuilder:实现Builder接口,针对不同的商业逻辑,具体化复杂对象的各部分的创建。 在建造过程完成后,提供产品的实例。

  3. Director:调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证对象各部分完整创建或按某种顺序创建。

  4. Product:要创建的复杂对象。
    它与抽象工厂相似,因为它也可以创建复杂的对象。主要的区别是builder模式着重于一步步构造一个复杂对象。而抽象工厂着重于多个系列的产品对象(简单或则是复杂的)。builder在最后一步返回产品,而对于抽象工厂来说,产品是立即返回的。
    当看完builder时,感觉似乎在哪里见过,或者有点怀疑我在抽象工厂中的代码实现部分是不是已经就是builder模式了。在抽象工厂代码实现中我定义了一个组装汽车的类:AssemblingCars。依次为汽车组装轮子,引擎,车架。细想过后觉得这就是一种构建,是车的构建的过程(一种带有顺序性或规则性的过程),并且这里的builder就我们的abstractFactory,主要是完成零部件的生产。其实就一种抽象工厂与Builder的结合,只是在AbstractProductCarpart类中需要进行简单的改进使其能后返回组装工厂组装完成后的产品。
    总结:
    Builder是通过Directory与builder两个类把产品的表示与构造分开的,这样就可以实现相同的构造之下产出不同的产品。比如书上所讲,当产品的表示变为计算了迷宫的墙和门的数量的时候,通过Directory构造后的result是墙与门的数量而不是迷宫本身。

0 0
原创粉丝点击