[原创]设计模型探索K-builder parttern之各施其职

[原创]设计模型探索K-builder parttern之各施其职
生成器模式
    生成器模式是将一个复杂的对象的构建与它的表示分离,使同样的构建过程可能创建不同的表示.
    是为了将构建复杂对象的 过程和它的 部件解耦.注意: 是解耦 过程部件.

因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:车轮 方向盘 发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一辆汽车,这个装配过程也很复杂(需要很好的组装技术),Builder模式就是为了将部件和组装过程分开.
生成器的组成部份:
   1.产品:  复杂对象  
   2.抽象生成器:抽象生成器是一个接口,该接口除了创建一个产品对象的各个组件定义了若干方法以外,还要定义返回project;
   3.具体生成器:实现抽象生成器的方法
   4.指挥者:它是一个类,该类含有抽象生成器的接口生成变量.它的职责是根据用户提供的生成器的种类来生成具体的产品对象.
生成器各部份之间的关系:

当客户需要一个产品时,把需要的参数传递个导向器,导向器根据传递的参数调用具体的生成器,具体的生成器通过一系列的操作(getAnimal()通过调用其它的接口方法实现)最会返回一个产品。

结论:生成器模式使得客户可以更加精细的控制一个对象的构建,每个具体的创建者包含了创建和装配一个特定产品的所有代码,这些代码只用写一次,便可以被不同的Director使用,从而可以装配出不同的对象。

和抽象工厂的区别:

    抽象工厂需要生产一个迷宫(Maze* maze),然后一步步生产迷宫。

    而生成器模式就不一样了,生成器(builder)封装了建造一个笔记本配件的方法。CreateMaze()只需要对这些配件进行组装。最后直接返回一个产品。

    这样看来工厂更像一种特殊的生成器,因为生成器也可以更换builder,生成器还能够生产不是一个系列的产品。即生成器不仅仅可以CreateMaze(),还可以生产CreateStandMaze()。类比到电脑,即不仅仅可以 CreateComputer(),还可以CreateComplexComputer(),更换builder也可以生产相同系列,不同的产品。

 



 

你可能感兴趣的:([原创]设计模型探索K-builder parttern之各施其职)