2

如果一个类并不总是创建 Foo 对象,那么将其称为 FooFactory 是错误的吗?例如,如果我有以下界面:

public interface IFooFactory
{
    Foo Create();
}

并按如下方式实现:

public class FooFactory : IFooFactory
{
    public IFoo Create()
    {
        return ServiceLocator.Current.GetInstance<IFoo>();
    }
}

那么这个类可能会根据我的 IoC 容器的配置方式创建一个 Foo 。如果应该为真正的工厂保留“XxxFacotry”名称,我应该如何称呼我的接口和类?

显而易见的答案是 IFooProvider,但我真的想避免使用“XxxProvider”,因为它被过度使用,因此太模糊了。另一方面, IFooServiceLocator 太具体了。

非常感谢替代命名建议。

4

3 回答 3

3

您的课程提供了一个IFilter,这可能需要也可能不需要创建一个。我看不出怎么FilterProvider太模糊了。

如果不喜欢怎么办FilterSource

不过,老实说,我认为这样称呼它并没有那么糟糕FilterFactory;我的意思是,谁在乎它是如何实施的?如果有人调用您的Create方法,他们很可能正在缓存结果,这使得无论他们是否知道这实际上Create并没有从头开始实例化一个新对象,这都没有实际意义。

无论哪种方式,正确的做法是记录您的类的实际功能,包括与使用它的人相关的任何细节(并忽略那些实际上不相关或不重要的细节)。

于 2010-08-25T12:34:28.590 回答
3

如果它有时会做蛋糕,你会称它为饼干工厂吗?

于 2010-08-25T12:56:15.370 回答
0

到目前为止,它似乎是 50/50。所以我接受的答案是暗示“是的;如果它并不总是创建新的 Foo 对象,那么将其命名为 FooFactory错误的,因为这是我自己的偏好所在。

于 2010-08-26T17:54:10.860 回答