我一直在思考實現某種功能的最佳方式......即派生出的對象使用相同的基礎(包括相互引用)來引用其他派生對象。建議設計模式?
下面是最好的(簡單)的例子,我能想到的來說明這樣的問題:房子由3個房間(但實際上它可能是數百個)按照各自的派生類表示。當然,它不會像現在這樣工作,它會導致堆棧溢出(適當的!)
假設示例中的每個房間都是特定於虛構房屋中的房間的,應該不超過一個任何子類。構建大量的實例,即使沒有遞歸,也會很麻煩。這會讓我覺得單身人士如果這不是一個禁忌......任何人都可以提出一些更合適的建議嗎?
謝謝!
public abstract class Room
{
abstract public void DoAction();
public Room[] ConnectedRooms;
}
public class Kitchen : Room
{
public Kitchen() { ConnectedRooms = new Room[] { new Hall() }; }
public override void DoAction() { MakeTea(); }
}
public class Bedroom : Room
{
public Bedroom() { ConnectedRooms = new Room[] { new Hall() }; }
public override void DoAction() { Sleep(); }
}
public class Hall : Room
{
public Hall() { ConnectedRooms = new Room[] { new Hall(), new Bedroom() }; }
public override void DoAction() { LookOutWindow(); }
}
我不會在這裏推薦singleton來強制執行單實例要求。如果不知道你在做什麼,就很難推薦任何東西。 有時最好的設計模式是沒有設計模式。更好地瞭解何時不使用模式而不是使用哪種模式。 – 2009-12-31 19:03:41
霍爾構造函數是否應該將連通房間設置爲另一個大廳或廚房? – 2010-01-01 02:54:22