Creational Pattern - Builder

王朝c#·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

Creational Pattern - Builder Author

Date Of Submission

User Level

Ashish Jaiman

02/19/2002

Beginner

Example

C# Implementation

using System;

using System.Collections;

public interface IHouse

{

bool GetBackyard();

long NoOfRooms();

string Discription();

}

public class CApt:IHouse

{ private bool mblnBackyard;

private Hashtable Rooms;

public CApt()

{ CRoom room;

Rooms = new Hashtable();

room = new CRoom();

room.RoomName = "Master Bedroom";

Rooms.Add ("room1",room);

room = new CRoom();

room.RoomName = "Second Bedroom";

Rooms.Add ("room2",room);

room = new CRoom();

room.RoomName = "Living Room";

Rooms.Add ("room3",room);

mblnBackyard = false;

}

public bool GetBackyard()

{

return mblnBackyard;

}

public long NoOfRooms()

{

return Rooms.Count;

}

public string Discription()

{

IDictionaryEnumerator myEnumerator = Rooms.GetEnumerator();

string strDiscription;

strDiscription = "This is an Apartment with " + Rooms.Count + " Rooms \n";

strDiscription = strDiscription + "This Apartment doesn't have a backyard \n";

while (myEnumerator.MoveNext())

{

strDiscription = strDiscription + "\n" + myEnumerator.Key + "\t" + ((CRoom)myEnumerator.Value).RoomName;

}

return strDiscription;

}

}

public class CSFH:IHouse

{ private bool mblnBackyard;

private Hashtable Rooms;

public CSFH()

{

CRoom room;

Rooms = new Hashtable();

room = new CRoom();

room.RoomName = "Master Bedroom";

Rooms.Add ("room1",room);

room = new CRoom();

room.RoomName = "Second Bedroom";

Rooms.Add ("room2",room);

room = new CRoom();

room.RoomName = "Third Room";

Rooms.Add ("room3",room);

room = new CRoom();

room.RoomName = "Living Room";

Rooms.Add ("room4",room);

room = new CRoom();

room.RoomName = "Guest Room";

Rooms.Add ("room5",room);

mblnBackyard = true;

}

public bool GetBackyard()

{

return mblnBackyard;

}

public long NoOfRooms()

{

return Rooms.Count;

}

public string Discription()

{

IDictionaryEnumerator myEnumerator = Rooms.GetEnumerator();

string strDiscription;

strDiscription = "This is an Single Family Home with " + Rooms.Count + " Rooms \n";

strDiscription = strDiscription + "This house has a backyard \n";

while (myEnumerator.MoveNext())

{

strDiscription = strDiscription + "\n" + myEnumerator.Key + "\t" + ((CRoom)myEnumerator.Value).RoomName;

}

return strDiscription;

}

}

public interface IRoom

{

string RoomName{get;set;}

}

public class CRoom:IRoom

{

private string mstrRoomName;

public string RoomName

{

get

{

return mstrRoomName;

}

set

{

mstrRoomName = value;

}

}

}

public class CDirector

{

public IHouse BuildHouse(bool blnBackyard)

{

if (blnBackyard)

{

return new CSFH();

}

else

{

return new CApt();

}

}

}

public class Client

{

static void Main(string[] args)

{

CDirector objDirector = new CDirector();

IHouse objHouse;

objHouse = objDirector.BuildHouse(bool.Parse(args[0]));

Console.WriteLine(objHouse.Discription());

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航