会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
alonestarsz
博客园
首页
新随笔
联系
订阅
管理
公告
在DotNet中使用Builder模式
using
System;
namespace
Builder.BuilderFolder
{
/**/
///
<summary>
///
HouseBuilder 的摘要说明。
///
它定义如何创建复杂对象的各个部件
///
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
///
当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
///
当构造过程必须允许被构造的对象有不同的表示时。
///
</summary>
public
abstract
class
HouseBuilder
{
/**/
///
<summary>
///
创建房间编号
///
</summary>
///
<param name="roomNum">
房间编号
</param>
public
abstract
void
BuilderRoom(
int
roomNum) ;
/**/
///
<summary>
///
创建房门
///
</summary>
///
<param name="roomNum1">
房间1
</param>
///
<param name="roomNum2">
房间2
</param>
public
abstract
void
BuilderDoor(
int
roomNum1,
int
roomNum2);
/**/
///
<summary>
///
取得房间
///
</summary>
///
<returns></returns>
public
abstract
House getHouse() ;
}
/**/
///
<summary>
///
Builder的具体实现ConcreteBuilder:
///
通过具体完成接口Builder来构建或装配产品的部件
///
</summary>
public
class
ConcreteHouseBuilder :HouseBuilder
{
private
House house;
public
ConcreteHouseBuilder()
{
//
//
TODO: 在此处添加构造函数逻辑
//
house
=
new
House();
}
public
override
void
BuilderRoom(
int
roomNum)
{
house.RoomNum
++
;
}
public
override
void
BuilderDoor(
int
roomNum1,
int
roomNum2)
{
house.DoorNum
++
;
}
public
override
House getHouse()
{
return
house;
}
}
/**/
///
<summary>
///
实现构建对象过程
///
</summary>
public
class
HouseDirector
{
public
HouseDirector()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
public
void
CreateHouse(HouseBuilder concreateBuilder)
{
concreateBuilder.BuilderRoom(
1
);
concreateBuilder.BuilderRoom(
2
);
concreateBuilder.BuilderDoor(
1
,
2
);
}
}
/**/
///
<summary>
///
构建实体定义
///
</summary>
public
class
House
{
私有变量
#region
私有变量
/**/
///
<summary>
///
房间编号
///
</summary>
private
int
roomNum;
/**/
///
<summary>
///
房门编号
///
</summary>
private
int
doorNum;
#endregion
共有属性
#region
共有属性
/**/
///
<summary>
///
房间编号属性
///
</summary>
public
int
RoomNum
{
get
{
return
this
.roomNum;
}
set
{
this
.roomNum
=
value;
}
}
/**/
///
<summary>
///
房门编号属性
///
</summary>
public
int
DoorNum
{
get
{
return
this
.doorNum;
}
set
{
this
.doorNum
=
value;
}
}
#endregion
public
House()
{
//
//
TODO: 在此处添加构造函数逻辑
//
this
.roomNum
=
0
;
this
.doorNum
=
0
;
}
}
//
一下为测试代码
/**/
///
<summary>
///
Class1 的摘要说明。
///
</summary>
class
Class1
{
/**/
///
<summary>
///
应用程序的主入口点。
///
</summary>
[STAThread]
static
void
Main(
string
[] args)
{
//
//
TODO: 在此处添加代码以启动应用程序
//
House house
=
new
House();
ConcreteHouseBuilder chb
=
new
ConcreteHouseBuilder();
HouseDirector hd
=
new
HouseDirector();
hd.CreateHouse(chb);
house
=
chb.getHouse();
System.Console.WriteLine (
"
My house has room :
"
+
house.RoomNum );
System.Console.WriteLine(
"
My house has door :
"
+
house.DoorNum );
Console.ReadLine();
}
}
}
posted on
2004-11-19 16:33
天煞孤星
阅读(
601
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部
Powered by:
博客园
Copyright © 2024 天煞孤星
Powered by .NET 8.0 on Kubernetes