Propósito
Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qué clase instanciar. Permite que una clase delegue en sus subclases la creación de objetos. También conocido como Virtual Constructor (Constructor Virtual).
Ejemplo
Las librerías para crear interfaces gráficas suelen utilizar este patrón y cada familia sería un sistema operativo distinto. Así pues, el usuario declara un Botón, pero de forma interna lo que está creando es un BotónWindows o un BotónLinux.
Ejemplos en el JDK
java.util.Calendar#getInstance()
java.util.ResourceBundle#getBundle()
java.text.NumberFormat#getInstance()
java.nio.charset.Charset#forName()
java.net.URLStreamHandlerFactory#createURLStreamHandler(String)
Problema
Un framework necesita estandarizar la arquitectura del modelo de clases para un conjunto determinado de aplicaciones, pero a su vez debe permitir que cada una de las aplicaciones definan su propio dominio de objetos.
No hay comentarios:
Publicar un comentario