2010-02-02 11 views
14

No recuerdo exactamente que es un patrón común, pero tengo una clase (patrón Factory Method) que tiene método para la creación de otras clases (Resumen patrón de fábrica) en función de los parámetros de enumeración:¿Cuál es un buen nombre para la clase que crea fábricas? (FooFactoryFactory suena tonto OMI)

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 tiene varias implementaciones, así como la interfaz Foo y la interfaz FooItem (patrón Abstract Factory común).

Entonces, ¿cómo cambiar el nombre de FooFactoryFactory?

¿Tal vez, FooFactoryCreator? (Piense en este nombre al escribir esta pregunta). En mi humilde opinión, es lindo, ¿cómo crees?

+0

Foo Fighters .. –

+1

'FooFactoryFactory' puede sonar tonto, pero creo que comunica claramente de qué se trata. Con suerte, es poco probable que necesites un 'FooFactoryFactoryFactory' :-) –

Respuesta

15
  • FooFactoryCreator
  • FooFactoryProvider

Pero es posible que desee cambiar el nombre de sus fábricas, digamos, a los constructores. Echar un vistazo a javax.xml.parsers.DocumentBuilderFactory, que procudes DocumentBuilder casos, que a su vez producen Document s

Mirando en el ejemplo DocumentBuilderFactory, otra opción surge:

  • tienen un resumen FooFactory
  • crea un método static newInstance() allí (con parámetros)
  • dejar newInstance() devolver la implementación adecuada de FooFactory
+4

+1: buenas sugerencias y alternativas. Yo mismo estaba pensando inmediatamente en 'MotherFooFactory' :) – BalusC

+3

la convención' Mother' es la que estoy usando la próxima vez que necesito esto :) – Bozho

+2

Solución aceptable, solo comentar es una advertencia de que solo en raras ocasiones hay una "fábrica de fábricas" un diseño verdaderamente necesario. Suena complicado, y me sorprendería si no hubiera un patrón más elegante para aplicar a cualquier problema. En este caso, DocumentBuilderFactory se utiliza tan a menudo mal (especialmente desde una perspectiva de seguridad de subprocesos), que inmediatamente cuestionaría cualquier código mío que pudiera compararse con él. –

Cuestiones relacionadas