如果一个类不是总是创建Foo对象,那么将它调用为FooFactory是错误的吗?例如,如果我有以下界面:
public interface IFooFactory
{
Foo Create();
}
并按如下方式实施:
public class FooFactory : IFooFactory
{
public IFoo Create()
{
return ServiceLocator.Current.GetInstance<IFoo>();
}
}
然后这个类可能创建一个Foo,具体取决于我的IoC容器的配置方式。如果'XxxFacotry'名称应该保留给真正的工厂,我该怎么称呼我的界面和类?
显而易见的答案是IFooProvider,但我真的想避免'XxxProvider',因为它过度使用,因此太模糊了。另一方面,IFooServiceLocator太具体了。
非常感谢备选命名建议。
答案 0 :(得分:3)
您的班级提供 IFilter
,可能会也可能不会创建一个。我没有看到FilterProvider
过于模糊。
如果你不喜欢它,那么FilterSource
呢?
老实说,我认为称之为FilterFactory
并不是那么糟糕;我的意思是,谁更关心它是如何实现的?如果有人调用您的Create
方法,他们很可能会缓存结果,这使得他们知道Create
是否实际实例化从零开始的对象。
无论哪种方式,正确的做法是记录您的班级的实际功能,包括与使用它的人相关的任何细节(并省略那些实际上不相关或不重要的细节)。
答案 1 :(得分:3)
如果它有时制作蛋糕,你会把饼干叫做工厂吗?
答案 2 :(得分:0)
到目前为止,似乎是50/50。所以我接受的答案是暗示'是的;如果总是创建新的Foo对象',那么将命名为FooFactory 是错误的,因为这是我自己喜欢的地方。