我应该使用哪种设计模式来针对不同的对象执行不同的方法?
问题描述:
一类A
有3 boolean
字段,并且有一组这样的对象。我需要针对每个对象执行不同的处理,就其3个字段的组合而言。我应该采用什么样的模式?我应该使用哪种设计模式来针对不同的对象执行不同的方法?
public class A {
boolean a, b, c;
}
谢谢。
丹尼尔
答
查一查registry
模式。从本质上讲,你可以定义一个接口AHandler
并为你想要处理的每个组合实现它。
然后,创建一个Map<A, AHandler>
并用处理程序静态初始化它。查找此映射以查找处理每个组合的处理程序。
+0
我刚才简化了这个问题:有很多'A'对象,不仅有8个对象,'A'的'equal'方法不是由这三个字段决定的,所以我需要确定一些字段的组合'A'对象对其类型进行分类,然后执行一些操作。 –
+0
你不必这样做,我甚至没有给出确切的方法:)基本的想法是有一个处理程序接口和一个从某些东西到处理程序实例的映射。如果包含状态,则可以在变体中克隆处理程序。 –
你是指'a = t,b = t,c = t',另一个是'a = t,b = t,c = f'等的逻辑吗? –
如果您需要依赖所有三种状态执行不同的操作,那么我将针对每种不同的操作实施一项策略,并通过开关或工厂选择正确的策略 – KroaX
@KroaX切换需要通过模式实现的内容。我会使用注册表,从元组(布尔,布尔,布尔)到处理程序的映射。 –