创建工厂的类的好名称是什么?(FooFactoryFactory听起来很傻)

我不记得它是否是一个常见的模式,但我有一个类(工厂方法模式),它有根据枚举参数创建其他类的方法(抽象工厂模式):

public class FooFactoryFactory {
   public FooFactory createFactory (FooFactoryType type) {
      switch (type) {
         case AFoo:
            return new AFooFactory ();
            break;
         case BFoo:
            return new BFooFactory ();
            break;
         default:
            throw new RuntimeException ("...");
      }  
   }
}

public interface FooFactory {
   Foo createFoo ();
   FooItem createFooItem ();
}

FooFactory有几个实现以及Foo接口和FooItem接口(常见的抽象工厂模式)。

那么,如何重命名FooFactoryFactory?

也许,FooFactoryCreator?(在写这个问题时想想这个名字)。恕我直言,这很好,你怎么看?


答案 1
  • FooFactoryCreator
  • FooFactoryProvider

但是,您可能希望将工厂重命名为建筑商。看一下,哪些过程实例,而实例又会产生javax.xml.parsers.DocumentBuilderFactoryDocumentBuilderDocument

看看这个例子,出现了另一个选项:DocumentBuilderFactory

  • 有摘要FooFactory
  • 在那里做一个方法(带参数)static newInstance()
  • 让返回适当实现newInstance()FooFactory

答案 2

《创建和销毁 Java 对象:第 1 部分》一书中,作者建议,“静态工厂方法的一个优点是,与构造函数不同,它们有名称。您可能会从文章中获得一些想法。