鉴于我有3个类Asset
,AssetA
,AssetB
使用工厂方法时构造继承的正确方法是什么?
以下是我想要使用这些类的方法:
Asset.new(data)
应根据AssetA
AssetB
或data
Asset
在某种意义上也应该充当超级类,AssetA
和AssetB
答案 0 :(得分:2)
我会创建一个基础Asset类,并让AssetA和AssetB继承它。工厂类应该是一个单独的类 - AssetFactory - 只有一个责任 - 它应该根据某些条件创建新的Asset对象。
答案 1 :(得分:2)
您是否将简单工厂与工厂方法混淆了?
简单工厂是一个类(例如,AssetFactory),它创建Asset层次结构的实例(例如,AssetA或AssetB)。
工厂方法(Gang of Four)有两个层次结构,一个是工厂和产品。我不确定你的问题与此有何关系。