目前,我有下面的类设计:类设计问题
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