шаблон проектирования - диспетчер - PullRequest
1 голос
/ 08 июня 2011

У меня есть такой пример использования:

Допустим, у меня есть enumType Foo (возможные значения A, B, C). Предположим, у меня есть

Class Bar{
 List<Foo> foos; // list of Foo objects where each object can have 1 of 3 possible values
 long id;
 String name;
 String num;
 ...
}

Мои клиенты будут вызывать метод "dispatch" в классе Dispatcher, который принимает "Bar".

Теперь для каждого (Foo foo: foos) он делегирует фактическую отправку определенным типам (т.е. я хочу отдельный обработчик для сообщений типа A, B и C).

Во-вторых, сообщение, которое должно быть отправлено, должно создаваться по-разному для A, B и C. На основании значения foo мы выбираем сообщение из шаблонов и вставляем «name», «num», полученное из Bar ).

Существуют ли конкретные модели, которые я рассматриваю для этого дизайна? Как я должен проектировать такую ​​систему. Буду признателен за обсуждение или ссылки на существующие шаблоны или лучшие практики.

1 Ответ

0 голосов
/ 08 июня 2011

Использовать полиморфизм.

enum Foo {
    VALUE1 {
        @Override public void someMethod() {...}
    },
    VALUE2 {
        @Override public void someMethod() {...}
    },
    VALUE 3 {
        @Override public void someMethod() {...}
    };

    public abstract void someMethod();

}
...