设计模式-建造者模式(Builder Pattern)

简单地说,就好像我是房地产开发商,要盖一座别墅,可是我不知道怎么盖(简单的砌墙,层次较低),也不知道怎么样设计(建几个房间,几个门好看,层次较高), 于是我需要找一民工,他们会砌墙,还得找个设计师,他知道怎么设计,我还要确保民工听设计师的领导,而设计师本身也不干活,光是下命令,这里砌一堵墙,这里砌一扇门,这样民工开始建设,最后,我可以向民工要房子了。在这个过程中,设计师是什么也没有,除了他在脑子里的设计和命令,所以要房子也是跟民工要。

///   <summary>
///  建造一个房子需要做的工作
///   </summary>
public  interface IBuildHouseWork
{
void BuildBalcony();
void BuildKitchen();
void BuildBedroom();
void BuildParlor();
DomainModel.Entities.House DeliverHouse();
}

///   <summary>
///  中国建筑工人,只会建造中式的房子
///   </summary>
public  class ChineseWorker : IBuildHouseWork
{
Entities.House MyHouse =  new Entities.House();
public  void BuildBalcony()
{
MyHouse.Balcony =  " 我建了中式阳台 ";
Console.WriteLine( " 我建了中式阳台 ");
}

public  void BuildKitchen()
{
MyHouse.Balcony =  " 我建了中式厨房 ";
Console.WriteLine( " 我建了中式厨房 ");
}

public  void BuildBedroom()
{
MyHouse.Balcony =  " 我建了中式卧室 ";
Console.WriteLine( " 我建了中式卧室 ");
}

public  void BuildParlor()
{
MyHouse.Balcony =  " 我建了中式客厅 ";
Console.WriteLine( " 我建了中式客厅 ");
}
public Entities.House DeliverHouse()
{
Console.WriteLine( " 造了一个中式风格的房子! ");
return MyHouse;

}
}

///   <summary>
///  西方工人,会建造西式小洋房
///   </summary>
public  class WesternWorker:IBuildHouseWork
{
Entities.House MyHouse =  new Entities.House();
public  void BuildBalcony()
{
MyHouse.Balcony =  " 我建了西式阳台 ";
Console.WriteLine( " 我建了西式阳台 ");
}

public  void BuildKitchen()
{
MyHouse.Balcony =  " 我建了西式厨房 ";
Console.WriteLine( " 我建了西式厨房 ");
}

public  void BuildBedroom()
{
MyHouse.Balcony =  " 我建了西式卧室 ";
Console.WriteLine( " 我建了西式卧室 ");
}

public  void BuildParlor()
{
MyHouse.Balcony =  " 我建了西式客厅 ";
Console.WriteLine( " 我建了西式客厅 ");
}
public Entities.House DeliverHouse()
{
Console.WriteLine( " 造了一个西式风格的房子! ");
return MyHouse;

}
}

///   <summary>
///  建筑师
///   </summary>
public  class Architect
{
IBuildHouseWork work;
public Architect(IBuildHouseWork work)
{
this.work = work;
}
public  void DirectWork()
{
work.BuildBalcony();
work.BuildBedroom();
work.BuildKitchen();
}
}

客户端调用

static  void Main( string[] args)
{
IBuildHouseWork buildhouse =  new ChineseWorker();
Architect chineseArchitect =  new Architect(buildhouse);
chineseArchitect.DirectWork();
buildhouse.DeliverHouse();

buildhouse =  new WesternWorker();
Architect westArchitect =  new Architect(buildhouse);
westArchitect.DirectWork();
buildhouse.DeliverHouse();
Console.Read();
}

转载于:https://www.cnblogs.com/bpcbcm/archive/2012/09/24/2700218.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值