2011-06-08 67 views
1

我有一个用例如下:设计模式 - 调度员

可以说我有一个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类的方法“调度”,这需要在“酒吧”。

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

其次,必须为A,B和C创建不同的消息。根据foo的值,我们从模板中选取消息并插入“name”,“num”酒吧)。

我正在寻找这种设计的具体模式?我应该如何设计这样一个系统。将不胜感激讨论或指向现有的模式或最佳做法。

+0

这是令人困惑的,因为Foo是不透明的。 Foo的结构是什么?你为什么在那里有Bar?那是调度员吗?它们如何与A,B和C相关? (部分混乱是所有五个名字都没有意义)。更具体地说,Dispatcher接收到A,B和C不同的消息吗?或者Dispatcher收到Foo,然后决定创建A,B或C,并将它们分别发送给单独的处理程序? – Saish 2011-12-29 21:43:26

回答

0

使用多态性。

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

    public abstract void someMethod(); 

} 
+0

我的意思是更类似于类层次结构,并设计了一个单独的调度程序,分别用于A,B和C等类型的消息。 – user776638 2011-06-08 15:45:23