1
我有一個基類和幾個從它派生的具體類。讓我們只說這看起來是這樣的:顯示基於具體對象類型的動態用戶界面?
abstract class Base
{
public int id;
public string baseVariable;
}
class ConcreteA extends Base
{
public string propertyA;
public float propertyB;
}
class ConcreteB extends Base
{
public decimal propertyC;
public RandomClass propertyD;
}
讓剛剛說的UI是一束從基地在它漂浮得出具體對象的一個大的開放空間。在這個視圖中,你需要的是一般的id
和baseVariable
屬性來獲得你需要顯示的通用對象。如果雙擊其中一個對象,它會彈出一個窗口,您可以在其中編輯其中的Base和Concrete對象的所有屬性。
在那個窗口中,我希望根據具體對象的類型動態加載選項卡,以及用於修改常用Base
屬性的靜態加載選項卡。有沒有一個很好的設計模式來實現這樣的事情?
好像我應該避免這種情況:
class PopUpWindow
{
public PopUpWindow(object:Base)
{
tabs.add(BaseTab);
switch(typeOf(object))
{
case ConcreteA:
tabs.add(ConcreteATab);
case ConcreteB:
tabs.add(ConcreteBTab);
}
}
}
但我也並不認爲我應該在對象本身被混合UI的東西,像這樣:
public PopUpWindow(object:Base)
{
tabs.add(BaseTab);
tabs.addAll(object.TabsToShowOnEdit);
...
任何意見或建議, ?很抱歉,這個冗長的問題。提前致謝。
設計模式是:
然後你可以填充你的PopupWindow時,容易出現使用工廠一個非常不同的概念。 http://en.wikipedia.org/wiki/Design_pattern_(computer_science) – 2011-03-23 13:34:41
@pavelrappo:不同於什麼?我想知道是否有適用於這種情況的設計模式。例如,似乎工廠模式在某種程度上可能有用,但我不確定應用它的好方法是什麼。 – Ocelot20 2011-03-23 13:47:17