Java 创建对象的策略模式?
将策略实例(接口实现)传递给方法,以便该方法可以基于策略实例类型返回特定类型的对象,这是一种好的做法吗 比如说, 我有一个方法Java 创建对象的策略模式?,java,Java,将策略实例(接口实现)传递给方法,以便该方法可以基于策略实例类型返回特定类型的对象,这是一种好的做法吗 比如说, 我有一个方法getData(stringx,stringy),但这需要返回类型a或类型B的对象。这个方法中的大部分内容都是通用的,因此我考虑重用一个方法 我正在考虑传递一个额外的参数TypeInterface t,并检查方法中该实例的类型,并构建A或B的对象 这种方法中的大部分内容都很常见,因此我考虑 重用单个方法 通过引入一个额外的类参数,您将使客户端API更加详细和复杂。 作为替
getData(stringx,stringy)
,但这需要返回类型a
或类型B
的对象。这个方法中的大部分内容都是通用的,因此我考虑重用一个方法
我正在考虑传递一个额外的参数TypeInterface t
,并检查方法中该实例的类型,并构建A
或B
的对象
这种方法中的大部分内容都很常见,因此我考虑
重用单个方法
通过引入一个额外的类参数,您将使客户端API更加详细和复杂。作为替代方案,您可以声明两个不同的公共方法,它们的命名和实现有所不同,您可以依赖公共私有方法进行公共处理 例如: 假设
X
实现A
和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){
...
}
这种方法中的大部分内容都很常见,因此我考虑
重用单个方法
通过引入一个额外的类参数,您将使客户端API更加详细和复杂。作为替代方案,您可以声明两个不同的公共方法,它们的命名和实现有所不同,您可以依赖公共私有方法进行公共处理 例如: 假设
X
实现A
和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){
...
}
是什么阻止了您在每个类中实现该方法?不幸的是,您在这里提供的信息不足以提供好的答案。
A
和B
是否相互关联?决定返回A
或B
的逻辑是什么?您是否考虑过使用生成器模式创建复杂对象?@Greggz code replication@tsolakp决定返回A或B的逻辑是什么?参数的类型(使用instanceOf()或通过获取类名)。是什么阻止了您在每个类中实现该方法?遗憾的是,这里没有提供足够的信息来获得好的答案。A
和B
是否相互关联?决定返回A
或B
的逻辑是什么?您是否考虑过使用生成器模式创建复杂对象?@Greggz code replication@tsolakp决定返回A或B的逻辑是什么?参数的类型(使用instanceOf()或获取类名)。