.NET建造者模式讲解建造者模式讲解
主要为大家详细介绍了ASP.NET建造者模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
建造者模式的定义:建造者模式的定义:
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式
建造者模式结构图:建造者模式结构图:
建造者模式角色:建造者模式角色:
1 builder:为创建一个产品对象的各个部件指定抽象接口。
2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品
的接口。
3 Director:构造一个使用Builder接口的对象。
4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,
包括将这些部件装配成最终产品的接口。
下面通过过现实生活中的建房子的例子,来诠释建造者模式:
1.抽象出建造者接口,里面有待实现的创建房子种类的条件,创建后返回房间的数量,以及这件房子的描述信息。
/// <summary>
/// 抽象建造者
/// </summary>
public interface IHouse
{
/// <summary>
/// 创建房子种类的条件
/// </summary>
/// <returns></returns>
bool GetBackyard();
/// <summary>
/// 创建的房间数
/// </summary>
/// <returns></returns>
long NoOfRooms();
/// <summary>
/// 描述
/// </summary>
/// <returns></returns>
string Description();
}
2.继承IHouse接口,具体建造者,这里创建了一件房间,里面包括客厅,厨房,洗手间,卧室,共四件房间这样一座房子。
public class CRoom
{
public string RoomName { get; set; }
}
/// <summary>
/// 具体建造者
/// </summary>
public class CSFH:IHouse
{
private bool mblnBackyard;
private Hashtable Rooms;
public CSFH() {
CRoom room = new CRoom();
room.RoomName = "一楼客厅";
Rooms = new Hashtable();
Rooms.Add("room1", room);
room = new CRoom();
room.RoomName = "一楼厨房";
Rooms.Add("room2", room);
room = new CRoom();
room.RoomName = "一楼洗手间";