3. Factory Method: Es un patrón de diseño que 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. El patrón Factory Method permite escrbir aplicaciones que son más flexibles respecto de los tipos a utilizar difiriendo la creación de las instancias en el sistema a subclases que pueden ser extendidas a medida que evoluciona el sistema. Permite también encapsular el conocimiento referente a la creación de objetos. Factory Method hace también que el diseño sea más adaptable a cambio de sólo un poco más de complejidad. Se facilita futuras ampliaciones, se gana en flexibilidad.
Diagrama UML.
Ejemplo: Calcular el pago de electricidad.
Crear una clase abstracta de Plan.
Crear las clases concretas que hereda la clase abstracta Plan.
Crear una clase GetPlanFactory a generar objetos de las clases concretas basada en información dada.
Generar las clase pago para usar el GetPlanFactory a obtener el objeto de clases concreta para pasar una información tal como tipo de DOMESTICPLAN or COMMERCIALPLAN or INSTITUTIONALPLAN.
4. Prototype: es un patrón de diseño creacional en el que los objetos se crean a partir de un instancia prototípica, que es clonada para dar lugar a nuevos objetos y se usa para evitar las subclases de un objeto creador como hace el patrón AbstractFactory y para evitar el costo inherente a la creación de de un objeto nuevo mediante el operador new cuando esto es demasiado costoso para la aplicación. Para implementar este patrón, se decalara una clase abstracta que tiene un método clone(). Cualquier clase que necesite un constructor deriva de la clase abstracta e implementa el método clone.
Diagrama UML
Ejemplo
Juan queire comprar una bicicleta de color rojo y de rodado 22, pero luego cuando llega al lugar y la ve desea ver la bicicleta de color negra y que sea rodado 30.
Bicicleta
BicicletaModificada
Cliente
Todas las clases en java en Java heredan un método de la clase Object llamado clone. Un metodo clone de un objeto retorna una copia de ese objeto. Esto solamente se hace para instancias de clases que dan permiso para que su instancia se clonada si, y solo si, ella implementa el interface Cloneable, en el caso que la no clase no tenga permisos para se clonada lanzara una excepción CloneNotSupportedException.
4. Prototype: es un patrón de diseño creacional en el que los objetos se crean a partir de un instancia prototípica, que es clonada para dar lugar a nuevos objetos y se usa para evitar las subclases de un objeto creador como hace el patrón AbstractFactory y para evitar el costo inherente a la creación de de un objeto nuevo mediante el operador new cuando esto es demasiado costoso para la aplicación. Para implementar este patrón, se decalara una clase abstracta que tiene un método clone(). Cualquier clase que necesite un constructor deriva de la clase abstracta e implementa el método clone.
Diagrama UML
Ejemplo
Juan queire comprar una bicicleta de color rojo y de rodado 22, pero luego cuando llega al lugar y la ve desea ver la bicicleta de color negra y que sea rodado 30.
Bicicleta
package ar.com.patronesdisenio.prototype; /** * @author nconde */ public abstract class Bicicleta implements Cloneable { private String color; private String rodado; /** * Metodo clonador */ public Bicicleta clone() throws CloneNotSupportedException { return (Bicicleta) super.clone(); } public abstract String verBicleta(); //Getters and Setters public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getRodado() { return rodado; } public void setRodado(String rodado) { this.rodado = rodado; } }
package ar.com.patronesdisenio.prototype.impl; import ar.com.patronesdisenio.prototype.Bicicleta; /** * @author usuario */ public class BicicletaModificada extends Bicicleta { @Override public String verBicleta() { return "Este es el color: " + this.getColor() + " El rodado es: " + this.getRodado(); } }
package ar.com.patronesdisenio.prototype.impl; import ar.com.patronesdisenio.prototype.Bicicleta; /** * * @author usuario * */ public class Cliente { /** * @param args * @throws CloneNotSupportedException */ public static void main(String[] args) throws CloneNotSupportedException { Bicicleta bc = new BicicletaModificada(); bc.setColor("Roja"); bc.setRodado("22"); System.out.println(bc.verBicleta()); Bicicleta bc2 = bc.clone(); bc2.setColor("Negro"); bc2.setRodado("30"); System.out.println(bc2.verBicleta()); } }
Todas las clases en java en Java heredan un método de la clase Object llamado clone. Un metodo clone de un objeto retorna una copia de ese objeto. Esto solamente se hace para instancias de clases que dan permiso para que su instancia se clonada si, y solo si, ella implementa el interface Cloneable, en el caso que la no clase no tenga permisos para se clonada lanzara una excepción CloneNotSupportedException.
No hay comentarios:
Publicar un comentario