Factory method pattern - ajpaez/Learning GitHub Wiki

FACTORY METHOD PATTERN

1. Overview

Este patrón aporta una forma de encapsular instanciaciones de tipos concretos. Encapsula la funcionalidad requerida para seleccionar e instanciar la clase apropiada dentro de un método designado para ello. La clase que se instancia es seleccionada de una jerarquía de clases basándose en el contexto de la aplicación y otros factores. La ventaja principal de este enfoque es que los objetos de la aplicación pueden hacer uso del método de la factoría para obtener acceso a la instancia de la clase apropiada, esto elimina la necesidad de que un objeto tenga que conocer la lógica para la selección del objeto que necesita.

2. Participantes

  • Producto: Define la interfaz de objetos que crea el método factory
  • ConcreteProduct: Objeto concreto que implementa al interfaz de producto
  • Creator: Declara el método factory que devuelve un objeto de tipo producto. creado
  • ConcreteCreator: Sobrescribe el método factory para devolver una instancia de ConcreteProduct

3. Cuando usar el patrón

  • Una clase no conozca de antemano la clase (tipo) de objetos que necesita crear
  • Una clase necesita subclases para especificar los objetos que crea.
  • Las clases delegan su responsabilidad hacia una de muchas subclases de ayuda y se desea localizar el conocimiento de que subclase hay que delegar

Ejemplo