设计模式建议

时间:2014-09-06 14:29:57

标签: java design-patterns

我有一个接受特定类型参数的方法的类。该方法的行为应该取决于具体的类。例如,

public void doSomething(SomeInterface t) {
    ...
}

根据参数的实际类,我需要改变行为。我需要外部类根据T中找到的值执行操作。具体来说,外部类需要构造一个Hibernate标准对象,该对象具有依赖于T的类型的限制,这是一个"的实现。查询"接口。外部类是参数化构建器接口的实现,它构造了可用于对数据存储执行查询的对象实例(例如,hibernate的Criteria,弹性搜索的SearchQueryBuilder等)。正如您所看到的,完成工作的问题在于,它需要知道如何构建这些标准,这超出了其仅包含有关要查询的内容的信息的预期目的

做像

这样的事情感觉很脏,也很错误
if (t instanceof X) { 
    ...
} else if (t instance of Y) {
    ...
}

我在这里看到了几个问题。

  1. 这需要先前了解
  2. 中传递的类型
  3. 课程未被关闭以进行修改"每次需要支持新类型时都需要修改。
  4. 有人可以建议一个可以用来解决这个问题的好设计模式吗?我的第一个想法是将工厂模式与策略结合使用,并使用"处理程序"创建类的实例。对于特定类型。我的另一个想法是创建一个Class的映射 - >在施工时提供给班级的处理程序。

    赞赏的想法。

1 个答案:

答案 0 :(得分:1)

最简单的想法是将逻辑放在SomeInterface

的实现中
public interface SomeInterface {
    public void actOnUsage();
}

public class SomeOtherClass {
    public void doSomething(SomeInterface t) {
        t.actonUsage();
    }
}