设计模式c#语言描述——建造者模式

设计

设计模式c#语言描述——建造者(builder)模式

*本文参考了《JAVA与模式》的部分内容,适合于设计模式的初学者。

建造模式是对象的创建模式。建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。

一个产品常有不同的组成成分作为产品的零件,它们通常叫做产品的内部表象。不同的产品可以有不同的内部表象,也就是不同的零件。使用建造模式可以使客户不需要知道所生成的产品的对象有哪些零件,每个产品的对应零件彼此有何不同,是怎么建造出来的,以及怎样组成产品。下面是一个示例性的实现。

在这个示例性的系统中,最终产品Product只有两个零件,即Part1和Part2.相应的建造方法也有两个:builderPart1和builderPart2.可以看出本模式涉及到四个角色:

抽象建造者(Builder):给出一个抽象接口,以规范产品对象的各个组成部分的建造。

具体建造者(Concrete Builder):担任这个角色的是与应用程序紧密相关的一些类,它们在应用程序的调用下创建产品的实例。

导演者(Director):是与客户端打交道的角色,将创建产品的请求划分为对各个零件的建造请求,再将这些请求委派给具体建造者。

产品(Product):建造中的对象。

Builder:

public interface Builder

{

void buildPart1();

void buildPart2();

Product retrieveResult();

}// END INTERFACE DEFINITION Builder

ConcreteBuilder:

public class ConcreteBuilder : Builder

{

private Product product;

public void buildPart1()

{

//build the first part of the product

}

public void buildPart2()

{

//build the second part of the product

}

public Product retrieveResult()

{

return product;

}

}// END CLASS DEFINITION ConcreteBuilder

Director:

public class Director

{

private Builder builder;

public void Director()

{

}

public void construct()//产品构造方法,负责调用各个零件建造方法

{

builder=new ConcreteBuilder();

builder.builderPart1();

builder.builderPart2();

builder.retrieveResult();

}

}// END CLASS DEFINITION Director

Product:

public interface Product

{

}// END INTERFACE DEFINITION Product

上面的系统中只有一个产品类,对应地也有一个具体建造者类。有多个产品及建造者类的建造模式如下图:

时间: 2024-10-29 18:58:15

设计模式c#语言描述——建造者模式的相关文章

设计模式c#语言描述——合成(Composite)模式

设计 设计模式c#语言描述--合成(Composite)模式 *本文参考了<JAVA与模式>的部分内容,适合于设计模式的初学者. 合成模型模式属于对象的结构模式,有时又叫做部分-整体模式.合成模式将对象组织到树结构中,可以用来描述整体与部分的关系.合成模式可以使客户端将单纯元素与复合元素同等看待.如文件夹与文件就是合成模式的典型应用.根据模式所实现接口的区别,合成模式可分为安全式和透明式两种. 安全式的合成模式要求管理聚集的方法只出现在树枝构件类中,而不出现在树叶构件类中.类图如下所示: 涉及

设计模式c#语言描述——适配器模式

设计 设计模式c#语言描述--适配器(Adapter)模式 *本文参考了<JAVA与模式>的部分内容,适合于设计模式的初学者. 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作.包括类的适配器模式和对象的适配器模式两种不同的形式. 类的适配器模式把被适配的类的API转换成为目标类的API,其静态结构图如下: 模式的角色如下: 目标(Target)角色:这就是所期待得到的接口.注意这里讨论的是类的适配器模式,因此目标不可以是类.

设计模式之十一(建造者模式)

原文:设计模式之十一(建造者模式) 前言 建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 结构图   Builder是为创建一个Product对象的各个部件指定的抽象接口. ConcreteBuilder是具体的建造者,实现Builder接口,构造和装配各个部件.可以有多个不同的具体的建造者. Product具体产品角色 Director就是构建一个使用Builder接口的对象. 代码实现  首先来看一下产品类 public class Product {

设计模式(三)建造者模式Builder(创建型)

设计模式(三)建造者模Builder(http://blog.csdn.net/hguisu/article/details/7518060) 1. 概述        在软件开发的过程中,当遇到一个"复杂的对象"的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定.        例子1:买肯德基        典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具(例如汉堡.炸鸡.可乐和玩具

iOS App设计模式开发中对建造者模式的运用实例_IOS

定义                                                                                                        "将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现". 看这个概念,可能感觉很是抽象,能看懂但是不知道有什么用.我们打一个比方来理解上面的定义.打比方之前,咱们先来聊聊这个设计模式是干什么用的?我们为什么要用这个模式呢?建造者模式负责将构建复杂对象的过程

设计模式详解之建造者模式

建造者模式(Builder) 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的.我们看一下代码: 还和前面一样,一个Sender接口,两个实现类MailSender和SmsSender.最后,建造者类如下: 建造类: public class Builder { private List<Sender> list = new ArrayLis

全面解析设计模式中的建造者模式及相关C++实现_C 语言

生活中有着很多的建造者的例子,个人觉得大学生活就是一个建造者模式的最好体验: 要完成大学教育,一般将大学教育过程分成 4 个学期进行,因此没有学习可以看作是构建完整大学教育的一个部分构建过程,每个人经过这 4 年的(4 个阶段)构建过程得到的最后的结果不一样,因为可能在四个阶段的构建中引入了很多的参数(每个人的机会和际遇不完全相同). 建造者模式要解决的也正是这样的问题:当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要要复杂对象的创建过程和这个对象的表示(展示)分离开来,

详解C++设计模式编程中建造者模式的实现_C 语言

建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.这是建造者模式的标准表达,不过看着让人迷惑,什么叫构建和表示的分离?一个对象使用构造函数构造之后不就固定了,只有通过它方法来改变它的属性吗?而且还要同样的构建过程搞出不同的表示,怎么可能呢?多写几个构造函数? 其实多写几个构造函数,根据不同参数设置对象不同的属性,也可以达到这样的效果,只是这样就非常麻烦了,每次要增加一种表示就要添加一个构造函数,将来构造函数会多得连自己都不记得了,这违背了开放-封闭的原则. 要

C++设计模式之建造者模式_C 语言

建造者模式 在GOF的<设计模式 可复用面向对象软件的基础>中是这样说的:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 这句话,似懂非懂的.一个复杂对象的创建,其通常是由很多的子对象构成:如果一个对象能够直接就创建好了,那么也不会称之为复杂对象.由于项目中需求的变化,这个复杂对象的各个部分经常会发生剧烈的变化,但是,不管怎么变化,将它们组合在一起,组成一个复杂的对象的事实是不会变的.建造者模式就提供了一种"封装机制"来将各个对象的变化隔离开,最