无废话C#设计模式之六:Builder
2009-04-02 08:21:24 来源:WEB开发网核心提示: l 你或许觉得ComputerBuilder和是抽象工厂模式中的抽象工厂角色差不多,GameComputerBuilder又像是具体工厂,无废话C#设计模式之六:Builder(3),其实,建造者模式和抽象工厂模式的侧重点不同,生产毫无关联的产品)则可以在具体建造者中各自实现这个方法,如果
l 你或许觉得ComputerBuilder和是抽象工厂模式中的抽象工厂角色差不多,GameComputerBuilder又像是具体工厂。其实,建造者模式和抽象工厂模式的侧重点不同,前者强调一个组装的概念,一个复杂对象由多个零件组装而成并且组装是按照一定的标准射顺序进行的,而后者强调的是创建一系列产品。建造者模式适用于组装一台电脑,而抽象工厂模式适用于提供用户笔记本电脑、台式电脑和掌上电脑的产品系列。
何时采用
l 从代码角度来说, 如果你希望分离复杂类型构建规则和类型内部组成,或者希望把相同的构建过程用于构建不同类型的时候可以考虑使用建造者模式。
l 从应用角度来说, 如果你希望解耦产品的创建过程和产品的具体配件,或者你希望为所有产品的创建复用一套稳定并且复杂的逻辑的时候可以考虑使用建造者模式。
实现要点
l 对象的构建过程由指导者完成,具体的组成由具体建造者完成,表示与构建分离。
l 建造者和指导者是建造者模式的关键点,如果进行合并或省略就可能会转变到模版方法模式。
l 如果对象的建造步骤是简单的,并且产品拥有一致的接口可以转而使用工厂模式。
注意事项
l 返回产品的方法是否必须,是否一定要在抽象建造者中有接口根据实际情况而定。如果它们有统一的接口可以在抽象建造者中体现这个抽象方法,如果没有统一的接口(比如,生产毫无关联的产品)则可以在具体建造者中各自实现这个方法,如果创建的产品是一种产品,那么甚至可以省略返回产品的接口(本文的例子就是这样)。
系列文章:
无废话C#设计模式之一:开篇
更多精彩
赞助商链接