目前,我有下面的類設計:類設計問題
AnimalHandler(對所有動物的基類)
TigerHandler延伸AnimalHandler,LionHandler延伸AnimalHandler,LeopardHandler延伸AnimalHandler等。
TigerHandler,LionHandler,LeopardHandler等等有「Tiger」,「Lion」,「Leopard」等等。
現在的問題是:TigerHandler,LionHandler,LeopardHandler等都是相同的(它們有相同的方法,等等),不同的是它們分別班對付虎,獅,豹等。因此,如果我需要一個名爲Cheetah的新動物組,我只需要複製(Tiger | Lion | Leopard)Handler中的任何一個,並搜索並替換Tiger,Lion,Leopard等「HAS A」類名稱。
而不是像上面那樣複製/創建一個新的CheetahHandler,有沒有一種方法(設計),我可以使用?例如,可以處理任何這些「HAS」類(如Tiger,Lion,Cheetah等)的GenericHandler。
我已經實現了它,你提到的(使用泛型),我也發現你唱一個共同的界面也很好(沒有泛型)。我仍然有一個問題:如果我在Web上下文中使用AnimalHandler,並且如果我傳遞諸如「mysite.com/app.do?animal=tiger」之類的東西,則必須使用if條件來檢查我收到的動物值,以及像你提到的那樣創建相應的對象(** AnimalHandler tigerHandler = new AnimalHandler <>(); **)。所以會有很多if(或其他)條件。有沒有辦法避免這種情況? –
2013-05-11 09:28:46