Qu'est-ce que Décorateur en Java.
La définition formelle de l'Décorateur modèle à partir du GoF livre (Design Patterns: Elements de Logiciels Orientés Objets Réutilisables, 1995, Pearson Education, Inc. La publication en tant Pearson Addison Wesley) vous dit que vous pouvez,
"Joindre des responsabilités supplémentaires à un objet de façon dynamique. Les décorateurs
fournir une alternative souple de sous-classement pour l'extension de la fonctionnalité".
Disons que nous avons une Pizza et nous tenons à le décorer avec des garnitures comme le Poulet Masala, de l'Oignon et de Fromage Mozzarella. Nous allons voir comment l'implémenter en Java ...
Programme pour montrer comment mettre en oeuvre le Décorateur Modèle de Conception en Java.
Pizza.java:
<!-- language-all: lang-html -->
package com.hubberspot.designpattern.structural.decorator;
public class Pizza {
public Pizza() {
}
public String description(){
return "Pizza";
}
}
package com.hubberspot.designpattern.structural.decorator;
public abstract class PizzaToppings extends Pizza {
public abstract String description();
}
package com.hubberspot.designpattern.structural.decorator;
public class ChickenMasala extends PizzaToppings {
private Pizza pizza;
public ChickenMasala(Pizza pizza) {
this.pizza = pizza;
}
@Override
public String description() {
return pizza.description() + " with chicken masala, ";
}
}
package com.hubberspot.designpattern.structural.decorator;
public class MozzarellaCheese extends PizzaToppings {
private Pizza pizza;
public MozzarellaCheese(Pizza pizza) {
this.pizza = pizza;
}
@Override
public String description() {
return pizza.description() + "and mozzarella cheese.";
}
}
package com.hubberspot.designpattern.structural.decorator;
public class Onion extends PizzaToppings {
private Pizza pizza;
public Onion(Pizza pizza) {
this.pizza = pizza;
}
@Override
public String description() {
return pizza.description() + "onions, ";
}
}
package com.hubberspot.designpattern.structural.decorator;
public class TestDecorator {
public static void main(String[] args) {
Pizza pizza = new Pizza();
pizza = new ChickenMasala(pizza);
pizza = new Onion(pizza);
pizza = new MozzarellaCheese(pizza);
System.out.println("You're getting " + pizza.description());
}
}