裝飾器模式

裝飾者模式——動態地將責任附加到對象上。想要擴展什麼功能,裝飾者提供有別於繼承的另一種選擇。

菜鳥教程

 

package pattern;

public class Decorator {
	public static void main(String[] args) {
		Beverage t = new Coffee();
		Beverage q = new Water(t);
		q = new Milk(q);
		q = new Milk(q);
		
		System.out.println(q.cost());
	}
}



abstract class Beverage{
	public abstract int cost();
}


abstract class CondimentDecorator extends Beverage{
	public abstract int cost();
}


class Sugar extends CondimentDecorator{
	private int money = 5;
	protected Beverage beverage;
	
	public Sugar(Beverage beverage){
		this.beverage = beverage;
	}
	
	public int cost(){
		return this.money + beverage.cost();
	}
}

class Milk extends CondimentDecorator{
	private int money = 10;
	private Beverage beverage;
	
	public Milk(Beverage beverage){
		this.beverage = beverage;
	}
	
	public int cost(){
		return this.money + beverage.cost();
	}
}



class Water extends CondimentDecorator{
	private int money = 1;
	protected Beverage beverage;
	
	public Water(Beverage beverage){
		this.beverage = beverage;
	}
	
	public int cost(){
		return this.money + beverage.cost();
	}
}

class Coffee extends Beverage{
	private int money = 100;

	public int cost() {
		return this.money;
	}
}




發佈了29 篇原創文章 · 獲贊 0 · 訪問量 4538
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章