再次研究设计模式 第二章 生成器

原创 2006年05月19日 14:38:00
 

1 Builder生成器)

目的

  • 把复杂对象的创建工作从表示中分离出来,同样的创建过程能够有不同的创建行为Separate the construction of a complex object from its representation so that the same construction process can create different representations.

结构

 

  • Builder : 创建一个产品对象的抽象接口。specifies an abstract interface for creating parts of a Product object.

  • ConcreteBuilder : 实现了Builder接口的产品的创建和组装者,定义并且跟踪它所创建的内容,提供一个接口来获取他创建的产品。(如 GetASCIIText, GetTextWidgetConstructs and assembles parts of the product by implementing the Builder interface. Defines and keeps track of the representation it creates. Provides an interface for retrieving the product (e.g., GetASCIIText, GetTextWidget).

  • Director : 创建一个对象来使用Builder接口Constructs an object using the Builder interface.

  • Product : 创建的复杂的对象,ConcreteBuilder 创建了产品的内容并通过产品组装方式确定了创建程。Represents the complex object under construction. ConcreteBuilder builds the product's internal representation and defines the process by which it's assembled.

通信方式

 

  • 客户代码创建Director对象并且通过指定的 Builder对象来配置它。The client creates the Director object and configures it with the desired Builder object.

  • 当有产品的某一部分需要被创建时,Director通知Builder创建。Director notifies the builder whenever a part of the product should be built.

  • Builder处理Director的要求,添加产品的一部分。Builder handles requests from the director and adds parts to the product.

  • 客户代码从builder中获取创建的产品。The client retrieves the product from the builder.

  • 与抽象工厂(Abstract Factory)的差别,多了一层Director,通过Director来创建产品,因此可能创建更为复杂的产品系列来构成一个新的产品。

  • 抽象工厂是创建一系列的产品供客户代码使用,而生成器模式是生成多个产品后组合成一个产品供客户代码使用。

应用场合

  • 创建一个复杂对象的算法独立于对象的各个组成部分以及他们的组装方式。The algorithm for creating a complex object should be independent of the parts that make up the object and how they're assembled.

  • 创建过程必须允许被创建的产品有不同的表示。The construction process must allow different representations for the object that's constructed.

模式效果

  • 让你的可以改变一个产品的内部表示It lets you vary a product's internal representation. Builder对象提供了一个Director(装配者)它有一个创建产品的抽象接口。该接口使Builder隐藏了产品的表示和内部结构,同样它隐藏了产品是如何装配的,由于产品通过抽象接口创建的,因此当改变 产品的内部表示时,所有需要做的工作就是定义一个新的Builderhe Builder object provides the director with an abstract interface for constructing the product. The interface lets the builder hide the representation and internal structure of the product. It also hides how the product gets assembled. Because the product is constructed through an abstract interface, all you have to do to change the product's internal representation is define a new kind of builder.

  • 它将代码与创建及表示中分离。It isolates code for construction and representation. 生成器模式通过封装复杂对象创建及表示方式提高了模块化性能。客户代码不需知道任何关于产品内部结构类,这些类是不会在Builder的接口中出现的。The Builder pattern improves modularity by encapsulating the way a complex object is constructed and represented. Clients needn't know anything about the classes that define the product's internal structure; such classes don't appear in Builder's interface.

  • 使你能更好是控制创建过程。It gives you finer control over the construction process.  与其它的一次性产品的创建型模式不同,生成器模式是在Director的控制下一步一步地创建产品的,只有当产品完全创建完成后,Director才会从中取得它,因此该模式比其它的创建型模式更多地反应了创建的过程,也就使你能更好地控制创建过程和产品的内部表示。Unlike creational patterns that construct products in one shot, the Builder pattern constructs the product step by step under the director's control. Only when the product is finished does the director retrieve it from the builder. Hence the Builder interface reflects the process of constructing the product more than other creational patterns. This gives you finer control over the construction process and consequently the internal structure of the resulting product.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

设计模式第二章

  • 2012-04-26 12:08
  • 1.55MB
  • 下载

设计模式讲解与代码实践(二)——生成器

本文讲解了生成器(Builder)设计模式的使用目的、基本形态、各参与者以及调用时序,并结合示例代码,讲解了该设计模式在具体业务场景下的使用。

设计模式 - 生成器 Builder

1. 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2.适用性 在以下情况使用Builder模式 当创建复杂对象的算法应该独立与该对象的组成部分及他...

设计模式(三) 生成器(Builder)

1.定义 生成器是一种对象创建型的模式。生成器将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。 2.适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式...

设计模式---生成器(Builder)

目的:在软件开发的过程中不可避免地会碰到一些复杂的对象。如果直接去创建这些复杂的对象,会使代码变得难于理解和维护,而且对于大多数用户而言他们并不关心对象各个成员的创建过程。Builder的作用就是将对...

C++设计模式-生成器

定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 结构 理解 1. 生成器(Builder)模式是一步步构建一个复杂的产品,它允许用户可以只通过...

设计模式(2)—— 生成器 (Builder)

Builder解决的问题 Builder(生成器)的模式用于用多个部件生成不同产品的问题: Builder模式适用于: 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时 当构...

IOS设计模式学习(6)生成器

1 前言 有时候,构建某些对象有多种不同方式。如果这些逻辑包含在构建这些对象的类中的单一方法中,构建的逻辑会非常荒唐(例如,针对各种构建需求的一大片嵌套if-else或者switch-case语句)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)