Builder: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Bot: orfanizzazione voci eliminate in seguito a consenso cancellazione
Nessun oggetto della modifica
Riga 30:
* Spesso i pattern creazionali sono complementari: Builder può infatti utilizzare uno degli altri pattern per implementare le componenti che deve costruire. Abstract Factory, Builder, e Prototype possono utilizzare il Singleton nelle loro implementazioni.
 
/** "Prodotto" */
class Pizza
{
{
private String dough = "";
private String sauce = "";
private String topping = "";
public void setDough(String dough) {
this.dough = dough;
}
public void setDoughsetSauce(String doughsauce) {
this.doughsauce = doughsauce;
}
public void setTopping(String topping) {
this.topping = topping;
}
}
 
/** "Abstract Builder" */
public void setSauce(String sauce) {
abstract class PizzaBuilder
this.sauce = sauce;
{
protected Pizza pizza;
public Pizza getPizza() {
return pizza;
}
public void createNewPizzaProduct() {
pizza = new Pizza();
}
public abstract void buildDough();
public abstract void buildSauce();
public abstract void buildTopping();
}
public void setTopping(String topping) {
this.topping = topping;
}
}
 
/** "Abstract BuilderConcreteBuilder" */
abstract class HawaiianPizzaBuilder extends PizzaBuilder {
{
protected Pizza pizza;
public Pizzavoid getPizzabuildDough() {
return pizza.setDough("cross");
}
public void buildSauce() {
pizza.setSauce("mild");
}
public void buildTopping() {
pizza.setTopping("ham+pineapple");
}
}
 
/** "ConcreteBuilder" */
public void createNewPizzaProduct() {
class SpicyPizzaBuilder extends PizzaBuilder {
pizza = new Pizza();
}
public void buildDough() {
pizza.setDough("pan baked");
}
public void buildSauce() {
pizza.setSauce("hot");
}
public abstract public void buildDoughbuildTopping(); {
pizza.setTopping("pepperoni+salami");
public abstract void buildSauce();
}
public abstract void buildTopping();
}
 
/** "ConcreteBuilder" */
class HawaiianPizzaBuilder extends PizzaBuilder {
 
public void buildDough() {
pizza.setDough("cross");
}
 
/** "Director" */
public void buildSauce() {
class Cook {
pizza.setSauce("mild");
}
 
public void buildTopping() {
pizza.setTopping("ham+pineapple");
}
}
 
/** "ConcreteBuilder" */
class SpicyPizzaBuilder extends PizzaBuilder {
 
public void buildDough() {
pizza.setDough("pan baked");
}
 
public void buildSauce() {
pizza.setSauce("hot");
}
 
public void buildTopping() {
pizza.setTopping("pepperoni+salami");
}
}
 
/** "Director" */
class Cook {
 
private PizzaBuilder pizzaBuilder;
private PizzaBuilder pizzaBuilder;
public void setPizzaBuilder(PizzaBuilder pb) {
pizzaBuilder = pb;
public void setPizzaBuilder(PizzaBuilder pb) {
pizzaBuilder = pb;
}
public Pizza getPizza() {
return pizzaBuilder.getPizza();
}
public void constructPizza() {
pizzaBuilder.createNewPizzaProduct();
pizzaBuilder.buildDough();
pizzaBuilder.buildSauce();
pizzaBuilder.buildTopping();
}
}
 
/** A given type of pizza being constructed. */
public Pizza getPizza() {
class BuilderExample {
return pizzaBuilder.getPizza();
}
public static void constructPizzamain(String[] args) {
pizzaBuilder.createNewPizzaProduct Cook cook = new Cook();
PizzaBuilder hawaiianPizzaBuilder = new HawaiianPizzaBuilder();
pizzaBuilder.buildDough();
PizzaBuilder spicyPizzaBuilder = new SpicyPizzaBuilder();
pizzaBuilder.buildSauce();
pizzaBuilder.buildTopping();
cook.setPizzaBuilder( hawaiianPizzaBuilder );
}
cook.constructPizza();
}
 
Pizza pizza = cook.getPizza();
/** A given type of pizza being constructed. */
}
class BuilderExample {
 
public static void main(String[] args) {
Cook cook = new Cook();
PizzaBuilder hawaiianPizzaBuilder = new HawaiianPizzaBuilder();
PizzaBuilder spicyPizzaBuilder = new SpicyPizzaBuilder();
cook.setPizzaBuilder( hawaiianPizzaBuilder );
cook.constructPizza();
Pizza pizza = cook.getPizza();
}
}
 
==Bibliografia==