将属性添加到抽象工厂

我对设计模式比较陌生,并在我正在开发的项目中使用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

回到顶部