пожалуйста, предложите шаблон дизайна - PullRequest
0 голосов
/ 16 августа 2011

Я пытаюсь выяснить, какой шаблон лучше всего использовать в следующем сценарии.

У меня есть разные типы представления данных для пользователя.Пользователь может выбрать, как данные будут отображаться на экране.

  1. Элемент списка
  2. Раскрывающийся список
  3. Список радиокнопок
  4. Флажки и т. Д.

Iзнать, что здесь подойдет абстрактная фабрика или фабричный метод.Но есть ли способ избавиться от следующего:

If (SomeType == SomeTypes.DropDown)
 {
    return new DropDownClass();
 }

Есть ли способ сделать это более абстрактным?

Ответы [ 2 ]

0 голосов
/ 16 августа 2011

в .Net Я регулярно использую комбинацию обобщения, наследования и полиморфизма для определения обработчика для конкретного запроса во время выполнения.

Все очень просто, когда вы используете что-то подобное, описанное в этот пост

0 голосов
/ 16 августа 2011

Вы можете создать список для SimpleFactories и спросить каждого из них по очереди, может ли он обрабатывать тип, и если да, разрешить ему создать компонент.

Это будет выглядеть так:

interface SimpleFactory{
    boolean canHandle(SomeType type);
    Component create()
}

class Factory{
    List<SimpleFactory) factories = ....

Component create(SomeType type){
    for(f : factories)
        if (f.canHandle(type) return f.create()
    return null;
}
...