将特定于某些实现的对象作为工厂类中的成员变量是一种好习惯吗?例如,在下面的代码中,分别需要 s1 和 s2 来构造 OneChannel 和 secondChannel 对象。将这些声明为工厂内的成员变量是一种好习惯吗?如果没有,还有什么可以替代的。
public class CommunicationChannelFactoryImpl {
@Autowired
SomeClass s1;
@Autowired
SomeOtherClass s2;
public CommunicationChannel getCommunicationChannel(String channel, Map<String, String> channelProperties) {
if(channel.equals("ONE") {
return new OneChannel(s1);
}
if(channel.equals("TWO") {
return new SecondChannel(s2);
}
}
}
请注意 s1 和 s2 是单例 bean