Bien, continuemos.
Veamos otro ejemplo decorador para practicar todo lo que aprendí en la clase anterior, pero ahora en
un ejemplo de producto configurables o compuesto, por ejemplo, podríamos tener, no sé, un computador,
un PC con alguna base y le podemos ir agregando componentes.
Por ejemplo, que tenga un procesador i7 va a tener un precio distinto.
Además, si le sumamos una tarjeta de video de tales características, otro precio.
En fin, ir componiendo, decorando un producto base es la idea.
Lo podríamos aplicar para cualquier tipo de producto, pero para el ejemplo lo vamos a ver con café,
por ejemplo el Starbucks, un café base y a partir de eso podríamos tener un café moca, por ejemplo,
o bien un capuchino o bien un espresso.
Bueno, si ese expreso es simplemente café, no tiene ningún decorador, pero si queremos moka, bueno,
tiene que tener crema, leche y chocolate.
Ahora ese capuchino solamente leche y crema o espuma se fijan y según los ingredientes que tengan o
componentes que se va a decorar, también va a afectar un poco en el precio.
Voy variando.
Comencemos.
Vamos a cerrar todo acá.
Todas las clases.
Vamos a cerrar este paquete.
Vamos a crear otro pactas.
Decore.
2.
Un segundo ejemplo bien.
Primero partamos con la interfaz.
Recuerden el nombre, lo mismo va a ser una interfaz para el producto o el objeto que vamos a decorar.
Y por supuesto, también para los decoradores, para que se pueda realizar de forma recursiva.
La decoración le podemos llamar decoraba oble o configurable configurable queda mucho mejor.
Entonces interfaz configurable bien va a tener dos métodos el primero float guet precio base.
Primer método el segundo método para decorar ingredientes de string get ingredientes para el ejemplo
lo vamos a manejar como un string, pero podría del tipo una clase.
También lo podemos manejar con una lista, un arreglo.
Vamos a crear nuestro café entonces por acá en decorador 2 una clase café que va a implementar esta
interfaz decorarlas o configurable.
Implementamos el método o lo método en realidad son 2.
Perfecto por defecto, bueno 0 y no vamos a tener atributos private float, el precio.
Y el nombre?
Un constructor.
Genere constructor con los dos precio y nombre o.
Me falto marcar los dos, pero bueno, lo agregamos a mano.
Vamos a colocar nombre acá del tipo string nombre coma y pasamos.
El nombre es pon tu nombre igual nombre listo, tenemos el constructor, vamos a retornar dice precio
o precio diez punto precio y acá nombre perfecto.
Nuestro objeto principal para decorar queda estar compuesto también de forma recursiva por otros ingredientes
y también por otro precio, dependiendo si lo queremos decorar con algún tipo de café u otro, con moka,
con capuchino o lo que sea.
En será el segundo paso.
El decorador abstracto.
Vamos a crear un package acá.
New Package decoradores o decorador.
Primero, el decorador abstracto, le vamos a llamar café decorador.
Bien, una clase abstracta entonces abstracto,
que además va a implementar la interfaz configurarla simplement configurable.
Bien, recuerden que todo decorador abstracto tiene que tener un atributo del tipo de interfaz en común
con el café del tipo configurable.
Recuerden que el café es configurable porque implementa un interfaz y por supuesto, cualquier decorador
también es configurable.
Entonces acá va a aceptar cualquier elemento configurable, ya sea el objeto propiamente tal como el
café o el decorador del café.
Protected tiene este protegido para la herencia configurable.
Le vamos a llamar café y un constructor generate.
Constructor y pasamos el café configurarla.
Estamos listos.
Ahora tenemos que implementar los decoradores, pero los decoradores concreto es bastante simple.
También apareció el ejemplo anterior.
En realidad el mismo patrón, así que muy similar les vamos a llamar.
Por ejemplo, con chocolate decorador.
Lo primero heredar de esta clase tracta tent café decorador.
Implementamos los métodos de la interfaz.
despreciarSe Guet ingredientes para decorar.
Y también el constructor del padre.
Que recibe el Configurables.
El café entonces sería café.
Punto G precio base.
Ahí tenemos el precio base, pero le podemos decorar o agregar 5 pesos más.
Por ejemplo, 5 f float ingredientes.
Muy similar.
Café.
Punto.
Guet.
Ingredientes.
Recuerden que devuelven nombre acá.
Guet ingrediente por defecto.
Devuelve el nombre que sería el ingrediente principal expreso o café expreso.
Y acá lo decoramos con chocolate.
Más una coma chocolate.
Y así vamos a tener también con crema con leche decorador y muy parecido.
Vamos a variar el precio y también el ingrediente.
Vamos a crear.
Con crema decorador lo mismo heredamos de café decorador, implementamos el constructor del padre.
Implementamos los métodos.
Ok.
Café?
Punto, guet.
Precio base.
Más 2,5 floto y acá Taffet punto jet ingredientes más una coma crema.
Bien, vamos a crear el último.
Con leche,
con leche, decorador de stents, café decorador, implementamos los métodos.
Okei.
Constructor.
Gaffé punto G precio base más tres coma siete punto 7 Floten.
Ingrediente café, un todo quieto, ingredientes leche.
Qué me faltaría?
Nada más.
Solamente la clase con el método M.
Probar el ejemplo.
Nos vamos acá a la raíz decorador.
Ejemplo
decorador café con el método Main.
Lo primero es crear una instancia de café del tipo configurables, siempre el tipo de la interfaz más
genérico, entonces configurable café new café.
Le vamos a llamar café moca
y el precio no se 7.
Ok.
Y vamos a decorar.
Entonces primero, qué es lo que lleva el moka?
Lleva crema, leche con crema, decorador con crema igual new con crema.
Y le pasamos el café.
El configurables.
Acá café.
Vamos a decorar el café con leche.
Con leche decorador y pasamos con crema.
Y por último, con chocolate.
Y pasamos con leche.
Y así se va componiendo café.
Se compone con crema, con crema.
Le agregamos leche a la leche, le agregamos chocolate y listo.
Vamos a imprimir Shout.
Por ejemplo, el precio del café moka es.
Con chocolate, con chocolate.
Punto.
Qué precio base?
Shout los ingredientes
tan bien con txoko, punto guet, ingredientes bien, vamos a probar.
Levantamos.
El precio del café Moka de dieciocho.
Vamos a ver, serían siete más la crema.
2,5.
Más la leche, tres coma siete, más el chocolate 5.
Dice 8,2.
Acá sería guet.
Ingredientes no. Precio no hay que ver.
Ingredientes.
A que sí?
Café moka contiene crema, leche y chocolate perfecto.
Está decorado.
Vamos a cerrar.
Veamos.
El capuchino
configurable.
Capuchino igual.
New.
Café.
Capuchino.
Iba a tener un precio de cuatro.
Perfecto.
Con crema.
Decorador.
Le vamos a pasar.
Capuchino.
Capuchino con leche.
Igual.
NIMH con leche.
Decorador.
Le pasamos con crema.
Con crema.
Chocolate no lleva.
Así que AutÃnoma South
precio.
El capuchino es con leche.
Punto.
Nyet.
Precio base.
Shout los ingredientes.
Con leche, punto guet ingredientes y por último, el café precio configurable expreso igual New café,
café expreso vale 3 y sin decorador no lleva nada.
No sé si con él que con ese sitio.
Hay que ir con eso, a ver si con ese café expreso ese soto el precio café expreso.
Precio es.
Guet ingredientes.
Vamos a ver.
Bien, primero el café moca 18.2 con los ingredientes, pues tenemos el capuchino de acomodos, lleva
crema y leche, pero no chocolate, después solamente el expreso 3 y café expreso sin ingredientes adicionales.
Entonces esta forma puedo componer y configurar tipo de producto y se aplica para cualquier caso, no
solamente para café.
Obviamente también para computadores con componentes.
En fin, nada más.
Nos vemos en la siguiente clase.