Sunteți pe pagina 1din 9

SINGLETON ABSTRACT FACTORY

Ejercicio "Patroness42" Ejercicio "PatronCreacional"


SoyUnico.java (paquete “Singleton”) Paquete “abstractfactory”
package singleton; InterfaceBearFactory.java

public class SoyUnico { package abstractfactory;


private String nombre;
private static SoyUnico instancia; import familias.DadBear;
import familias.MomBear;
private SoyUnico(){
System.out.println("creando soyunico"); public interface InterfaceBearFactory {
} //tendremos un metodo de creacion por cada familia de
objetos
private SoyUnico(String nombre){//debe haber DadBear crearDadBear();
restricciones MomBear crearMomBear();
this.nombre = nombre; }
}
GoldenBearFactory.java
@Override
package abstractfactory;
public String toString(){
import familias.DadBear;
return this.nombre;
import familias.GoldenDadBear;
}
import familias.GoldenMomBear;
public static SoyUnico getInstancia(){
import familias.MomBear;
if(instancia==null){
instancia = new SoyUnico();
public class GoldenBearFactory implements
}else{
InterfaceBearFactory{
System.out.println("El objeto ya ha sido creado");
}
@Override
return instancia;
public DadBear crearDadBear() {
}
DadBear dad = new GoldenDadBear();
return dad;
public static SoyUnico getInstancia(String n){
}
if(instancia == null){
instancia = new SoyUnico(n);
@Override
}else{
public MomBear crearMomBear() {
System.out.println("El objeto ya ha sido creado");
MomBear mom = new GoldenMomBear();
}
return mom;
return instancia;
}
}
}
}
BrownBearFactory.java
Patroness42.java (Paquete “patroness42”) package abstractfactory;
import familias.BrownDadBear;
package patroness42;
import familias.BrownMomBear;
import singleton.SoyUnico;
import familias.DadBear;
public class Patroness42 {
import familias.MomBear;
public static void main(String[] args) {
//singleton
public class BrownBearFactory implements
SoyUnico s1 = SoyUnico.getInstancia("Carlos");
InterfaceBearFactory{
System.out.println(s1.toString());
SoyUnico s2 = SoyUnico.getInstancia("Juan");
@Override
System.out.println(s2.toString());
public DadBear crearDadBear() {
System.out.println(s1.equals(s2));
DadBear dad = new BrownDadBear();
}
return dad;
}
}
GoldenMomBear.java
@Override
public MomBear crearMomBear() { package familias;
MomBear mom = new BrownMomBear();
return mom; public class GoldenMomBear extends MomBear{
} public GoldenMomBear(){
} System.out.println("Creando GoldenMomBear");
}
AffectionateBearFactory.java }

package abstractfactory; BrownDadBear.java


import familias.AffectionateDadBear;
import familias.AffectionateMomBear; package familias;
import familias.DadBear; public class BrownDadBear extends DadBear{
import familias.MomBear; public BrownDadBear(){
System.out.println("Creando BrownDadBear");
public class AffectionateBearFactory implements }
InterfaceBearFactory{ }
BrownMomBear.java
@Override
package familias;
public DadBear crearDadBear() {
public class BrownMomBear extends MomBear{
DadBear dad = new AffectionateDadBear();
public BrownMomBear(){
return dad;
System.out.println("Creando BrownMomBear");
}
}
}
@Override
public MomBear crearMomBear() { AffectionateDadBear.java
MomBear mom = new AffectionateMomBear();
package familias;
return mom;
public class AffectionateDadBear extends DadBear{
}
public AffectionateDadBear(){
}
System.out.println("AffectionateDadBear: Aqui te
Paquete “familias” tengo tu cariñito >:v");
}
DadBear.java
}
package familias; AffectionateMomBear.java
public class DadBear { package familias;
public class AffectionateMomBear extends MomBear{
}
public AffectionateMomBear(){
MomBear.java System.out.println("AffectionateMomBear: Aqui te
tengo tu cariñito >:v");
package familias; }
}
public class MomBear {
Paquete “patroncreacional”
}
PatronCreacional.java
GoldenDadBear.java
package patroncreacional;
package familias;
import abstractfactory.AffectionateBearFactory;
public class GoldenDadBear extends DadBear{ import abstractfactory.BrownBearFactory;
public GoldenDadBear(){ import abstractfactory.GoldenBearFactory;
System.out.println("creando GoldenDadBear"); import abstractfactory.InterfaceBearFactory;
} import familias.DadBear;
} import familias.MomBear;
import javax.swing.JOptionPane;
public class PatronCreacional {
public static void main(String[] args) { GuitarraAdapter.java
package patronadapter;
DadBear dad= null; public class GuitarraAdapter extends Guitarra{
MomBear mom = null; private GuitarraAcustica ga;
public GuitarraAdapter(GuitarraAcustica ga) {
String op = JOptionPane.showInputDialog("Selecciona this.ga = ga;
1.Golden, 2.Brown, 3.Osito Cariñosito :v"); }
InterfaceBearFactory ibf = null; public GuitarraAcustica getGa() {
if(op.equals("1")){ return ga;
//crear golden }
ibf = new GoldenBearFactory(); public void setGa(GuitarraAcustica ga) {
}else if(op.equals("2")){ this.ga = ga;
//crear brown }
ibf = new BrownBearFactory(); @Override
}else{ public void onGuitarra(){
ibf = new AffectionateBearFactory(); this.ga.play();
} }
dad = ibf.crearDadBear(); @Override
mom = ibf.crearMomBear(); public void offGuitarra(){
} this.ga.dejarGuitarra();
} }
ADAPTER }
Concierto.java
Paquete “patronadapter”
package patronadapter;
Guitarra.java import java.util.ArrayList;
public class Concierto {
package patronadapter;
public void iniciar(ArrayList<Guitarra> guitarras){
public abstract class Guitarra {
System.out.println("Iniciando Concierto");
abstract public void onGuitarra();
for(Guitarra g: guitarras){
abstract public void offGuitarra();
g.onGuitarra();
}
}
}
GuitarraElectrica.java }
package patronadapter; PatronAdapter.java
public class GuitarraElectrica extends Guitarra{
package patronadapter;
@Override
import java.util.ArrayList;
public void onGuitarra() {
System.out.println("Enchufar y tocar Guitarra");
public class PatronAdapter {
}
@Override
public static void main(String[] args) {
public void offGuitarra() {
Concierto concierto = new Concierto();
System.out.println("Descenchufar Guitarra");
ArrayList<Guitarra> lista = new ArrayList();
}
lista.add(new GuitarraElectrica());
}
lista.add(new GuitarraElectrica());
//no es posible porque GuitarraAcustica no es una
GuitarraAcustica.java guitarra
package patronadapter; //lista.add(new GuitarraAcustica());
public class GuitarraAcustica { GuitarraAdapter gadapter = new GuitarraAdapter(new
public void play(){ GuitarraAcustica());
System.out.println("Tocar Guitarra"); lista.add(gadapter);
} concierto.iniciar(lista);
public void dejarGuitarra(){ }
System.out.println("Guardar guitarra"); }
}
}
DECORATOR Paquete “adicionales”

Paquete “pizzas” AdicionalesDecorador.java

Pizza.java package adicionales;


import pizzas.Pizza;
package pizzas; public abstract class AdicionalesDecorador extends Pizza{
protected Pizza pizza;
public abstract class Pizza { }
protected String ingredientes;
protected double precio; Vegetales.java

public abstract String getIngredientes(); package adicionales;


public abstract double calcularPrecio(); import pizzas.Pizza;
} public class Vegetales extends AdicionalesDecorador{

PizzaNapolitana.java public Vegetales(){


}
package pizzas; public Vegetales(Pizza pizza){
this.pizza=pizza;
public class PizzaNapolitana extends Pizza{ }

public PizzaNapolitana(){ @Override


this.ingredientes = "Queso, tomate, albahaca"; public String getIngredientes(){
this.precio = 7; return this.pizza.getIngredientes() + "Vegetales";
} }
@Override
@Override public double calcularPrecio(){
public String getIngredientes(){ return this.pizza.calcularPrecio() + 1;
return this.ingredientes; }
} }
QuesoExtra.java
@Override
public double calcularPrecio(){ package adicionales;
return this.precio; import pizzas.Pizza;
}
} public class QuesoExtra extends AdicionalesDecorador{
PizzaHawaiana.java public QuesoExtra(){
}
package pizzas; public QuesoExtra(Pizza pizza){
this.pizza = pizza;
public class PizzaHawaiana extends Pizza{ }

public PizzaHawaiana(){ @Override


this.ingredientes = "Queso, jamon, pinia"; public String getIngredientes(){
this.precio = 6.5; return this.pizza.getIngredientes() + "Queso Extra";
} }
@Override
@Override public double calcularPrecio(){
public String getIngredientes(){ return this.pizza.calcularPrecio() + 1.75;
return this.ingredientes; }
}
}
@Override
public double calcularPrecio(){
return this.precio;
}

}
Paquete “patrondecorator” public Persona() {
}
AdicionalesDecorador.java public Persona(String nombre, String apellidos) {
this.nombre = nombre;
package patrondecorator;
this.apellidos = apellidos;
import javax.swing.JOptionPane;
}
import pizzas.*;
import adicionales.*;
public String getNombre() {
return nombre;
public class PatronDecorator {
}
public static void main(String[] args) {
Pizza pizza;
public void setNombre(String nombre) {
int op =
this.nombre = nombre;
Integer.parseInt(JOptionPane.showInputDialog("1. Pizza
}
Napolitana\n" + "2. Pizza Hawaiana"));
public String getApellidos() {
switch(op){
return apellidos;
case 1:
}
pizza = new PizzaNapolitana();
break;
public void setApellidos(String apellidos) {
case 2:
this.apellidos = apellidos;
pizza = new PizzaHawaiana();
}
break;
default:
@Override
pizza = new PizzaHawaiana();
public String toString() {
break;
return "Persona{" + "nombre=" + nombre + ",
}
apellidos=" + apellidos + '}';
}
int num;
}
do{
IteradorPersona.java
int ing =
Integer.parseInt(JOptionPane.showInputDialog("1. package Iterador;
Vegetales\n" + "2. Extra Queso"));
if(ing ==1){ public interface IteradorPersona {
pizza = new Vegetales(pizza); boolean hasNext();
}else{ Persona next();
pizza = new QuesoExtra(pizza); Persona first();
} }
num = IteradorConcretoPersona.java
Integer.parseInt(JOptionPane.showInputDialog("Desea
Agragar ing?\n" + "1. Si " + "0. No")); package Iterador;
}while(num==1); import java.util.ArrayList;

JOptionPane.showMessageDialog(null, "Ingredientes " public class IteradorConcretoPersona implements


+pizza.getIngredientes() +"\n" + "Precio: $" IteradorPersona{
+pizza.calcularPrecio()); private int posicion = 0;
} private ArrayList<Persona> lista;
}
ITERATOR public IteradorConcretoPersona(ArrayList l){
this.lista = l;
Paquete “Iterador” }

Persona.java @Override
public boolean hasNext(){
package Iterador;
boolean res = false;
public class Persona { if(posicion < lista.size()){
private String nombre; res = true;
private String apellidos; }
return res;
} Paquete “patroniteradorpersona”

@Override PatronIteradorPersona.java
public Persona next(){
package patroniteradorpersona;
Persona p = null;
import Iterador.AgregadoPersona;
if(lista.size()>0){
import Iterador.AgregadoPersonaConcreto;
p = lista.get(posicion);
import Iterador.IteradorPersona;
posicion++;
import Iterador.Persona;
}
return p;
public class PatronIteradorPersona {
}
@Override
public static void main(String[] args) {
public Persona first(){
AgregadoPersonaConcreto ap = new
Persona p = null;
AgregadoPersonaConcreto();
if(lista.size()>0){
p = lista.get(0);
ap.addPersona(new Persona("Luis ", "Suarez"));
}
ap.addPersona(new Persona("Carlos ", "Chavez"));
return p;
ap.addPersona(new Persona("Jesus ", "Rodriguez"));
}
ap.addPersona(new Persona("Martha ", "Quimi"));
}
AgregadoPersona.java
IteradorPersona iterador = ap.crearIterador();
package Iterador; while(iterador.hasNext()){
Persona p = iterador.next();
public interface AgregadoPersona { System.out.println(p.toString());
IteradorPersona crearIterador(); }
} }
AgregadoPersonaConcreto.java }
OBSERVER
package Iterador;
import java.util.ArrayList; Paquete “observerbiblioteca”

public class AgregadoPersonaConcreto implements Libro.java


AgregadoPersona{
package observerbiblioteca;
ArrayList<Persona> lista = null;
public class Libro {
public AgregadoPersonaConcreto(){ private String titulo;
lista = new ArrayList(); private String estado;
}
public String getTitulo() {
public void addPersona(Persona p){ return titulo;
lista.add(p); }
}
public void setTitulo(String titulo) {
@Override this.titulo = titulo;
public IteradorPersona crearIterador(){ }
return new IteradorConcretoPersona(lista);
public String getEstado() {
}
return estado;
}
}

public void setEstado(String estado) {


this.estado = estado;
}
}
ILibroMalEstado.java private static ArrayList<ILibroMalEstado> observadores =
new ArrayList<ILibroMalEstado>();
package observerbiblioteca;
@Override
public interface ILibroMalEstado { public void attach(ILibroMalEstado observador) {
public void update(); observadores.add(observador);
} }
Compras.java
@Override
package observerbiblioteca;
public void dettach(ILibroMalEstado observador) {
observadores.remove(observador);
public class Compras implements ILibroMalEstado{
}

@Override
@Override
public void update() {
public void notifyObservers() {
System.out.println("Compras: ");
for(int i = 0; i<observadores.size(); i++){
System.out.println("Solicito Nueva cotizacion...");
observadores.get(i).update();
}
}
}
}
Stock.java }
package observerbiblioteca;
Biblioteca.java
public class Stock implements ILibroMalEstado{
package observerbiblioteca;

@Override
public class Biblioteca {
public void update() {
public void devuelveLibro(Libro libro){
System.out.println("Stock: ");
if(libro.getEstado().equals("MALO")){
System.out.println("Le doy de baja...");
AlarmaLibro a = new AlarmaLibro();
}
a.notifyObservers();
}
}
Administracion.java }
}
package observerbiblioteca;

public class Administracion implements ILibroMalEstado{ ObserverBiblioteca.java


package observerbiblioteca;
@Override
public class ObserverBiblioteca {
public void update() {
public static void main(String[] args) {
System.out.println("Administracion: ");
AlarmaLibro a = new AlarmaLibro();
System.out.println("Envío una queja formal...");
a.attach(new Compras());
}
a.attach(new Administracion());
}
a.attach(new Stock());
Subject.java
Libro libro = new Libro();
package observerbiblioteca;
libro.setEstado("MALO");
public interface Subject {
Biblioteca b = new Biblioteca();
public void attach(ILibroMalEstado observador);
b.devuelveLibro(libro);
public void dettach(ILibroMalEstado observador);
public void notifyObservers();
}
}
}

AlarmaLibro.java
package observerbiblioteca;
import java.util.ArrayList;

public class AlarmaLibro implements Subject{


FACTORY METHOD @Override
public String getDescripcion(){
Paquete “fmtriangulo” return "Soy un Triangulo Equilátero";
}
Triangulo.java
@Override
package fmtriangulo;
public double getSuperficie(){
// Acá iría el algoritmo para calcular superficie de un
public abstract class Triangulo { triangulo equilátero
private int ladoA;
return 0;
private int ladoB;
}
private int ladoC; // con sus get y set
@Override
public Triangulo(int ladoA, int ladoB, int ladoC){ public void dibujate(){
setLadoA(ladoA);
// Acá iría el algoritmo para dibujar un triangulo
setLadoB(ladoB);
equilátero.
setLadoC(ladoC); }
} }

public abstract String getDescripcion();


Escaleno.java
public abstract double getSuperficie();
public abstract void dibujate(); package fmtriangulo;

public int getLadoA() { public class Escaleno extends Triangulo{


return ladoA; public Escaleno(int anguloA, int anguloB, int anguloC) {
} super(anguloA, anguloB, anguloC);
}
public void setLadoA(int ladoA) {
this.ladoA = ladoA; @Override
} public String getDescripcion() {
return "Soy un Triangulo Escaleno";
public int getLadoB() { }
return ladoB;
} @Override
public double getSuperficie() {
public void setLadoB(int ladoB) { // Aca iria el algoritmo para calcular superficie de un
this.ladoB = ladoB; triangulo escaleno.
} return 0;
}
public int getLadoC() {
return ladoC; @Override
} public void dibujate() {
// Aca iria el algoritmo para dibujar un triangulo
public void setLadoC(int ladoC) { escaleno.
this.ladoC = ladoC; }
} }
}
Isosceles.java
Equilatero.java package fmtriangulo;
package fmtriangulo;
public class Isosceles extends Triangulo{
public class Equilatero extends Triangulo{ public Isosceles(int ladoA, int ladoB, int ladoC) {
public Equilatero(int anguloA, int anguloB, int anguloC){ super(ladoA, ladoB, ladoC);
super(anguloA, anguloB, anguloC); }
}
@Override
public String getDescripcion() {
return "Soy un Triangulo Isosceles";
}

@Override
public double getSuperficie() {
// Aca iria el algoritmo para calcular superficie de un
triangulo escaleno.
return 0;
}

@Override
public void dibujate() {
// Aca iria el algoritmo para dibujar un triangulo
escaleno.
}
}
TrianguloFactoryMethod.java
package fmtriangulo;

public interface TrianguloFactoryMethod {


public Triangulo createTriangulo(int ladoA, int ladoB, int
ladoC);
}

TrianguloFactory.java
package fmtriangulo;

public class TrianguloFactory implements


TrianguloFactoryMethod {

@Override
public Triangulo createTriangulo(int ladoA, int ladoB, int
ladoC) {
if ((ladoA == ladoB) && (ladoA == ladoC)){
return new Equilatero(ladoA, ladoB, ladoC);
}else if((ladoA != ladoB) && (ladoA != ladoC) && (ladoB
!= ladoC)){
return new Escaleno(ladoA, ladoB, ladoC);
}else{
return new Isosceles(ladoA, ladoB, ladoC);
}
}
}

FMTriangulo.java
package fmtriangulo;

public class FMTriangulo {


public static void main(String[] args) {
TrianguloFactoryMethod factory = new
TrianguloFactory();
Triangulo triangulo = factory.createTriangulo(10, 10,
10);
System.out.println (triangulo. getDescripcion()) ;
}
}

S-ar putea să vă placă și