我有一个接受特定类型参数的方法的类。该方法的行为应该取决于具体的类。例如,
public void doSomething(SomeInterface t) {
...
}
根据参数的实际类,我需要改变行为。我需要外部类根据T中找到的值执行操作。具体来说,外部类需要构造一个Hibernate标准对象,该对象具有依赖于T的类型的限制,这是一个"的实现。查询"接口。外部类是参数化构建器接口的实现,它构造了可用于对数据存储执行查询的对象实例(例如,hibernate的Criteria,弹性搜索的SearchQueryBuilder
等)。正如您所看到的,完成工作的问题在于,它需要知道如何构建这些标准,这超出了其仅包含有关要查询的内容的信息的预期目的
做像
这样的事情感觉很脏,也很错误if (t instanceof X) {
...
} else if (t instance of Y) {
...
}
我在这里看到了几个问题。
有人可以建议一个可以用来解决这个问题的好设计模式吗?我的第一个想法是将工厂模式与策略结合使用,并使用"处理程序"创建类的实例。对于特定类型。我的另一个想法是创建一个Class的映射 - >在施工时提供给班级的处理程序。
赞赏的想法。
答案 0 :(得分:1)
最简单的想法是将逻辑放在SomeInterface
:
public interface SomeInterface {
public void actOnUsage();
}
public class SomeOtherClass {
public void doSomething(SomeInterface t) {
t.actonUsage();
}
}