【问题标题】:design pattern - dispatcher设计模式——调度员
【发布时间】:2011-09-10 14:58:24
【问题描述】:

我有一个类似如下的用例:

假设我有一个 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;
 ...
}

我的客户会在 Dispatcher 类中调用一个方法“dispatch”,该方法接受“Bar”。

现在对于每个 (Foo foo : foos),它将实际调度委托给特定类型(即,我想要一个单独的处理程序来处理 A、B 和 C 类型的消息)。

其次,要发送的消息应该为A、B和C创建不同的消息。根据foo的值,我们从模板中提取消息并插入从Bar获得的“name”、“num” )。

我正在为这个设计寻找特定的模式吗?我应该如何设计这样的系统。希望讨论或指出现有模式或最佳实践。

【问题讨论】:

  • 这很令人困惑,因为 Foo 是不透明的。 Foo的结构是什么?为什么你在那里有酒吧?是调度员吗?它们与 A、B 和 C 有什么关系? (部分混乱是所有五个名称都没有意义)。更具体地说,Dispatcher 接收到的 A、B 和 C 是不同的消息吗?还是 Dispatcher 接收到 Foo 然后决定创建 A、B 或 C,并将每个发送到单独的 Handler?

标签: java design-patterns architecture


【解决方案1】:

使用多态性。

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

    public abstract void someMethod();

}

【讨论】:

  • 我的意思更像是类层次结构和设计,每个分派器用于 A、B 和 C 等类型的消息。
猜你喜欢
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
相关资源
最近更新 更多