将属性添加到抽象工厂
我对设计模式比较陌生,并在我正在开发的项目中使用GangOfFour工厂模式" title="抽象工厂模式">抽象工厂模式。我想知道引入一个叫做FileName的字符串属性的最好方法,它是混凝土工厂生产的所有抽象产品所需要的。我会将属性添加到抽象工厂
将它添加到抽象工厂接口,以便它必须在树中实现并传递到返回的产品的构造函数。即使该界面只关心创建工厂?
我将使用一段GoF .Net Optomised代码来使用一个示例,因为任何学习这些模式的人都会熟悉它,并且可能在将来提供一个很好的参考点。
/// <summary> /// The 'AbstractFactory' interface.
/// </summary>
interface IContinentFactory
{
// Define property in here??
IHerbivore CreateHerbivore();
ICarnivore CreateCarnivore();
}
/// <summary>
/// The 'ConcreteFactory1' class.
/// </summary>
class AfricaFactory : IContinentFactory
{
// Implement property in here??
public IHerbivore CreateHerbivore()
{
return new Wildebeest(PassInPropertyHere??);
}
public ICarnivore CreateCarnivore(PassInPropertyHere??)
{
return new Lion();
}
}
回答:
我认为这取决于工厂和工厂自己创建的对象的性质。如果没有一些信息(如本例中的FileName)就无法创建它,那么您有两种选择:您的工厂知道该数据或者需要将其提供给工厂(其中一个选项是在方法调用期间传递该数据)。否则,如果从创建的角度来看这个信息是可选的,那么你不应该把工厂混乱并且把这个负担放在调用代码上(例如,对象从工厂返回后,创建对象的FileName属性可以设置为必要的值)。
以上是 将属性添加到抽象工厂 的全部内容, 来源链接: utcz.com/qa/264402.html