java设计模式从不同类型的数据源创建对象
我一直在尝试为以下场景找到合适的设计模式(如果存在正式模式):
对象A需要一个对象B。现在,可以使用来自不同来源的数据创建对象B,例如S_1或S_2。我不希望A必须关心创建B,它应该被赋予并继续。那么,有没有一种干净的方法来创建B呢?我已经考虑过工厂类型模式,但我没有多态性。我的想法是:
B obj_b = B.createInstance(type_S_1);
obj_A.doSomething(obj_B);
其中,我为静态方法createInstance()提供了数据类型soruce
我仍然在学习很多关于设计模式的知识,所以这就是我问的原因。我可能把事情复杂化了,所以请随便说吧
# 1 楼答案
方法1
示例
但您也可以满足抽象类和接口的优点。 优点是客户端将继承常用方法,或者您甚至可以实现模板方法
示例
方法2
示例
如果需要为实例的构造设置许多元素,也可以考虑使用通用抽象生成器。 该解决方案的advatange是,您可以设置一个默认值,必要时提供对客户端隐藏的内部实现
# 2 楼答案
我不确定,但是您可以给它一个类型来指定要构建什么
# 3 楼答案
正如您所意识到的,抽象工厂模式对于您的用例来说是多余的,因为您不需要多态性。尽管如此,这种设计模式的具体工厂部分还是有意义的。所以这看起来有点像:
了解更多关于你真正想做的事情可能有助于给你一个更好的答案。您当前的问题描述非常抽象。。。如果你能给我们一些关于你的域名的更多细节,那将有助于给你一个更好的答案