首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向抽象工厂添加属性

向抽象工厂添加属性
EN

Stack Overflow用户
提问于 2010-01-04 05:41:48
回答 1查看 239关注 0票数 1

我对设计模式比较陌生,在我正在从事的一个项目中使用了GangOfFour抽象工厂模式。我想知道引入名为FileName的字符串类型的属性的最佳方式,混凝土工厂生产的所有抽象产品都需要该属性。我会吗?

将其添加到Abstract Factory接口,以便它必须沿着树向下实现,并传递到返回的Product的构造函数中。即使该接口只关心创建工厂?

我将使用GoF .Net优化代码的一部分来使用一个简单的示例,任何其他学习这些模式的人都会熟悉它,并可能在未来提供一个很好的参考点。

代码语言:javascript
复制
/// <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();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-04 05:51:09

我认为这取决于由工厂和工厂本身创建的对象的性质。如果不能在没有某些信息的情况下创建它(比如本例中的FileName ),那么您有两个选择:要么您的工厂知道这些数据,要么您需要将其提供给工厂(这里的一个选项是在方法调用期间传递该数据)。否则,如果从创建的角度来看,此信息是可选的,则您不应该使用此信息来扰乱工厂,并将此负担放在调用代码上(例如,可以在对象从工厂返回后立即将所创建对象的FileName属性设置为必需的值)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1996436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档