策略模式来创建对象?

时间:2018-01-17 19:54:19

标签: java

将策略实例(接口实现)传递给方法是否是一个好习惯,以便该方法可以根据策略实例类型返回特定类型的对象?

例如,

我有一个方法getData(String x, String y),但这需要返回type Atype B的对象。这种方法中的大部分内容都很常见,因此我想重用一种方法。

我正在考虑传递额外的参数TypeInterface t,并在方法中检查此实例的类型,并构建AB的对象。

1 个答案:

答案 0 :(得分:2)

  

这种方法中的大部分内容都很常见,因此我在想   重用一种方法。

通过引入除类之外的其他参数,您将使客户端API更加冗长和复杂 作为替代方案,您可以声明两个不同的公共方法,它们的命名和实现方式不同,您可以依赖常用处理的公共私有方法。

例如:

假设XA实施的界面B

public X getA(String x, String y){
   X a = new A();
   // specificities for A ...
   ... 
   // common processing
   commonForGet(a);
   return a;
}

public X getB(String x, String y){
   X b = new B();
   // specificities for B ...
   ... 
   // common processing
   commonForGet(b);
   return b;
}

private void commonForGet(X x){
   ...
}