2011-06-08 103 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