以下内容轉載請注明來自"菩提樹下的楊過(http://blog.sqlsky.com)"
應用概述:
StarBuzz咖啡店有很多飲料,每種飲料都可以根據客戶需要加一些調料,比如深培咖啡可以加摩卡(或雙倍摩卡),而且某些飲料可以分為大中小杯,根據容量不同,售價不同,而且調料的價格根據飲料的容量不同而不同(比如大杯咖啡加糖要1元,中杯咖啡加糖要0.9元等)
又一設計原則:
對擴充開放,對修改關閉(本例中各種飲料都有共同的大中小杯特性--這是關閉的部分,另外各種具體子類飲料和調料的描述和價格都不相同--這是開放的部分)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 飲料抽象類
1
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) using System;
2
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) using System.Collections.Generic;
3
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) using System.Linq;
4
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) using System.Text;
5
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 6
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) namespace StarBazz
7
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) {
8
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /**//// <summary>
9
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// 抽象"飲料"類
10
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// </summary>
11
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public abstract class Beverage
12
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 13
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) protected string description = "Unknown Beverage";
14
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) protected int _Size = (int)SizeEnum.Big;//初始化各種飲料均為"大杯"
15
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 16
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public abstract string GetDescription();//抽象方法,由"飲料"的具體子類傳回各自的描述
17
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 18
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public abstract double GetCost();//抽象方法,由"飲料"
19
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 20
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /**//// <summary>
21
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// 傳回各種飲料的"大中小杯"
22
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// </summary>
23
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// <returns></returns>
24
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public int GetSize()
25
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 26
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) return _Size;
27
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) }
28
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 29
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 30
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// 設定各種飲料的"大中小杯"
31
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 32
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// <param name="size"></param>
33
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public void SetSize(SizeEnum size)
34
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 35
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _Size = (int)size;
36
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 37
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 38
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 39
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 40
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// 大中小杯枚舉類型
41
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 42
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public enum SizeEnum:int
43
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 44
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Small =1,Middle=2,Big=3
45
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 46
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) }
47
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) }
48
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 49
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 被裝飾元件之一:“濃咖啡”類
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// “濃咖啡”類
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public class Espresso:Beverage
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public Espresso()
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) description = "Espresso";//初始化描述
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// 實作父類的抽象方法GetDescription()
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public override string GetDescription()
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) return description;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// 實作父類的抽象方法GetCost() -注:“濃咖啡”不論大中小杯,價格均為1.99元
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public override double GetCost()
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) return 1.99;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 被裝飾元件之二:“深培咖啡類”類
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// “HouseBlend”深培咖啡類
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public class HouseBlend:Beverage
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public HouseBlend()
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) description = "House Blend Coffee" ;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// 實作父類的抽象方法
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) return description + "(" + (Beverage.SizeEnum)this.GetSize() + ")";
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// 實作父類的抽象方法(大杯0.89元,中杯0.79元,小杯0.68元)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) double _cost = 0;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) switch (base.GetSize())
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) case (int)Beverage.SizeEnum.Big:
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _cost = 0.89;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) break;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) case (int)Beverage.SizeEnum.Middle:
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _cost = 0.79;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) case (int)Beverage.SizeEnum.Small:
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _cost = 0.68;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) default:
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) }
50
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 51
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) return _cost;
52
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 53
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 54
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 55
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 56
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 裝飾者類: “摩卡”調料
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// “摩卡”調料(用來給其它各種飲料做調味品)--裝飾者
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public class Mocha:Beverage
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Beverage _beverage;//聲明一個内部公用的Beverage對象
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// 構造函數
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// <param name="beverage"></param>
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public Mocha(Beverage beverage)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _beverage = beverage;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) description = _beverage.GetDescription();//儲存被裝飾對象的描述
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _Size = _beverage.GetSize();//儲存被裝飾對象的"大中小杯"值
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public override string GetDescription()
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) return description + ",Mocha";
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) /// 實作父類的抽象方法,計算價格(大杯飲料加一份Mocha需要0.2元,中杯飲料加一份Mocha需要0.15元,小杯飲料加一份Mocha需要0.1元)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) public override double GetCost()
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) double _cost = this._beverage.GetCost();
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) switch (_beverage.GetSize())
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _cost += 0.2;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _cost += 0.15;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _cost += 0.1;
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 57
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 58
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 59
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) return _cost;
60
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 61
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 62
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 63
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 64
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) 最終測試
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) class Program
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) static void Main(string[] args)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) //先來一份Expresso(濃咖啡),不要任何調料
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Beverage _beverage = new Espresso();
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Console.WriteLine(_beverage.GetDescription() + " Cost:" + _beverage.GetCost().ToString());//Espresso Cost:1.99
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) //再來一份HouseBlend(深培咖啡)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Beverage _beverage2 = new HouseBlend();
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Console.WriteLine(_beverage2.GetDescription() + " Cost:" + _beverage2.GetCost().ToString());//House Blend Coffee(Big) Cost:0.89
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) //客戶補充說:隻要一份小杯的哦!
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _beverage2.SetSize(Beverage.SizeEnum.Small);
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Console.WriteLine(_beverage2.GetDescription() + " Cost:" + _beverage2.GetCost().ToString());//House Blend Coffee(Small) Cost:0.68
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) //客戶要求:我要加二份摩卡
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Beverage _beverage3 = new Mocha(_beverage2);
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Console.WriteLine(_beverage3.GetDescription() + " Cost:" + _beverage3.GetCost().ToString());//House Blend Coffee(Small),Mocha Cost:0.78
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) _beverage3 = new Mocha(_beverage3);
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Console.WriteLine(_beverage3.GetDescription() + " Cost:" + _beverage3.GetCost().ToString());//House Blend Coffee(Small),Mocha,Mocha Cost:0.88
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Console.ReadLine();
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體)
(Head First 設計模式)學習筆記(3) --裝飾者模式(StarBuzz咖啡店執行個體) Espresso Cost:1.99
House Blend Coffee(Big) Cost:0.89
House Blend Coffee(Small) Cost:0.68
House Blend Coffee(Small),Mocha Cost:0.78
House Blend Coffee(Small),Mocha,Mocha Cost:0.88