У меня есть базовый класс и несколько конкретных классов, которые вытекают из него. Скажем так, это выглядит так:
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;
}
Допустим, пользовательский интерфейс представляет собой большое открытое пространство с кучей конкретных объектов, происходящих из базы, плавающей вокруг него. В этом представлении все, что вам нужно, это общие свойства id
и baseVariable
, чтобы получить то, что вам нужно для отображения универсальных объектов. Если дважды щелкнуть один из объектов, появится всплывающее окно, в котором вы сможете редактировать все свойства базовых и бетонных объектов внутри.
В этом окне я хочу иметь динамически загружаемые вкладки, основанные на типе конкретного объекта, который у меня есть, и статически загружаемые вкладки, которые используются для изменения общих свойств 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);
...
Есть идеи или предложения? Извините за длинный вопрос. Заранее спасибо.