搏客 Winning
After three days without programming, life becomes meaningless
新文章
新随笔
管理
posts - 46, comments - 41, trackbacks - 21
生成器模式
1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2、当构造过程必须允许被构造的对象有不同的表示时。简单点来说,它是为了将构建复杂对象的过程和它的部件解耦,从而达到将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
namespace
DesignPattern.Builder
{
//
生成器接口
public
interface
IBuilder
{
void
BuilderPartA();
void
BuilderPartB();
IProduct Product
{
get
;}
}
//
产品接口
public
interface
IProduct
{
string
PartA
{
set
;
get
;
}
string
PartB
{
set
;
get
;
}
}
//
生成器
public
class
ConcreteBuilder : IBuilder
{
private
IProduct m_product;
public
ConcreteBuilder()
{
this
.m_product
=
new
ConcreteProduct();
}
public
void
BuilderPartA()
{
this
.m_product.PartA
=
"
PartA Completed!\r\n
"
;
}
public
void
BuilderPartB()
{
this
.m_product.PartB
=
"
PartB Completed!\r\n
"
;
}
public
IProduct Product
{
get
{
return
this
.m_product;
}
}
}
//
产品
public
class
ConcreteProduct : IProduct
{
private
string
m_partA,m_partB,m_partC;
public
string
PartA
{
set
{
this
.m_partA
=
value;}
get
{
return
this
.m_partA;}
}
public
string
PartB
{
set
{
this
.m_partB
=
value;}
get
{
return
this
.m_partB;}
}
public
override
string
ToString()
{
return
this
.m_partA
+
this
.m_partB;
}
}
//
导演
public
class
Director
{
private
IBuilder builder;
public
Director(IBuilder builder)
{
this
.builder
=
builder;
}
public
void
Construct()
{
builder.BuilderPartA();
builder.BuilderPartB();
}
}
//
测试
public
class
Consume
{
public
static
void
Main()
{
IBuilder builder
=
new
ConcreteBuilder();
Director dir
=
new
Director(builder);
dir.Construct();
Console.Write(builder.Product.ToString());
}
}
}
posted on 2005-04-07 16:47
搏客 Winning
阅读(700)
评论(0)
编辑
收藏
网摘
所属分类:
架构设计
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索
相关文章:
.NET初学者架构设计指南
.NET初学者架构设计指南(三)设计模式
.NET设计模式系列文章
.NET设计模式(2):单件模式(Singleton Pattern)
架构设计的第一个问题_AX
想转架构师,大家有什么建议不?
[推荐学习资料].NET初学者架构设计指南
门户网站架构设计
相关链接:
所属分类的其他文章:
对数据映射器的心得
类定义的"枚举"类型
状态模式
调停者(Mediator)模式
享元模式
代理模式
重载不能动态区分父子类型
访问者模式
适配器模式
原型模式
最新IT新闻:
微软发布Silverlight 2 向开源社区示好
金融危机下 IT产业人人自危
微软中国研发集团2009财年校园招聘启动
Silverlight 2正式版SDK可以下载了
IBM扩大研究规模 在上海成立研究院
我的主页
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
随笔分类
代码片段(13)
架构设计(20)
其他分类(2)
算法基础(3)
玩具代码(5)
项目实践(3)
随笔档案
2008年7月 (1)
2008年6月 (1)
2007年7月 (1)
2007年5月 (2)
2006年7月 (3)
2006年6月 (6)
2006年4月 (1)
2006年3月 (2)
2005年5月 (1)
2005年4月 (24)
2005年3月 (1)
2005年1月 (1)
2004年9月 (2)
积分与排名
积分 - 31280
排名 - 1375
最新评论
阅读排行榜
1. .Net三层的Hello World(2304)
2. 监听器模式(1253)
3. 迭代和递推算法(1127)
4. javascript 拼图游戏 v2.0(1120)
5. javascript 拼图游戏 v1.0(1117)
6. HTA图片浏览器(985)
7. 可跨域的不需要XMLHTTP控件的 "AJAX"(971)
8. 职责链模式(947)
9. 组合模式(902)
10. 工厂模式(859)
11. 调停者(Mediator)模式(839)
12. 状态模式(836)
13. 装饰模式(824)
14. 对一个项目架构的总结(822)
15. 访问者模式(804)
16. 适配器模式(796)
17. 最长非递增子序列(772)
18. 桥接模式(772)
19. 生成器模式(700)
20. 解析器模式(669)
21. 最简单的NHibernate应用(668)
22. 原型模式(651)
23. 观察者模式(622)
24. 代理模式(601)
25. 命令模式(599)
26. 字符串压缩和解压(595)
27. 享元模式(593)
28. 我用javascript写的几个数据结构希望对大家做Ajax网页有用(589)
29. 用Javascript编写一个动画(576)
30. XML 读入DataSet 然后保存到数据库(555)