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

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
设计模式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



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


seover="window.status='正文-- 设计模式c# 语言描述—— 建造者模式';return true">
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值