Drink Class 相關
namespace Beverage
{
public abstract class Drink
{
protected string DrinkName = string.Empty;
protected decimal DrinkPrice = 0.0m;
public virtual string GetDrinkName()
{
return DrinkName;
}
public abstract string GetDescript();
public abstract decimal GetPrice();
}
public class GreeTea : Drink
{
public GreeTea()
{
this.DrinkName = "綠茶";
this.DrinkPrice = 15m;
}
public override string GetDrinkName()
{
return DrinkName;
}
public override string GetDescript()
{
return $"{DrinkName} ( {DrinkPrice} )";
}
public override decimal GetPrice()
{
return DrinkPrice;
}
}
}
Decorator Class 相關namespace Beverage
{
public abstract class Decorator : Drink
{
protected Drink drink;
protected string DecoratorName = string.Empty;
protected decimal DecoratorPrice = 0.0m;
public Decorator(Drink drink)
{
this.drink = drink;
}
public override string GetDrinkName()
{
return drink.GetDrinkName();
}
public override string GetDescript()
{
return drink.GetDescript() + $", {DecoratorName} ( {DecoratorPrice} )";
}
public override decimal GetPrice()
{
return drink.GetPrice() + DecoratorPrice;
}
}
public class Bubble : Decorator
{
public Bubble(Drink drink) : base(drink)
{
this.DecoratorName = "珍珠";
this.DecoratorPrice = 10m;
}
}
public class Milk : Decorator
{
public Milk(Drink drink) : base(drink)
{
this.DecoratorName = "牛奶";
this.DecoratorPrice = 21m;
}
}
public class Yakult : Decorator
{
public Yakult(Drink drink) : base(drink)
{
this.DecoratorName = "養樂多";
this.DecoratorPrice = 10m;
}
public override string GetDrinkName()
{
return $"{DecoratorName} - {drink.GetDrinkName()}";
}
}
}
執行namespace Beverage
{
class Program
{
static void Main(string[] args)
{
Drink d1 = new GreeTea();
d1 = new Bubble(d1);
d1 = new Yakult(d1);
ShowData(d1);
}
private static void ShowData(Drink d)
{
Console.WriteLine($"品名:{d.GetDrinkName()}");
Console.WriteLine($"價格:{d.GetPrice()}");
Console.WriteLine($"說明:{d.GetDescript()}");
}
}
}
結果

![[C#] 加解密](https://c7.staticflickr.com/1/675/31442458870_610299519d_z.jpg)
![[C#] 壓縮與解壓縮-1](https://c8.staticflickr.com/1/720/31588424975_b5295a8803_z.jpg)








![[Win10] Windows 10 相片檢視器-4](https://c3.staticflickr.com/6/5747/30977526610_d4f36e8d4a.jpg)
![[C#] Windows Service-6](https://c3.staticflickr.com/6/5570/30453734474_27582d2410_z.jpg)
![[C#] Control.Visible 和 DataBinding-1](https://c1.staticflickr.com/6/5740/30979922536_810c218867.jpg)
![[C#] ComboBox DropDownList (續)-1](https://c3.staticflickr.com/6/5533/30627846930_5528148a21.jpg)
![[C#] ComboBox DropDownList (續)-2](https://c4.staticflickr.com/6/5660/30841417291_33ac9c19da.jpg)
![[C#] 避免 Hard Code](https://c7.staticflickr.com/6/5794/30242529734_a7616c379a.jpg)
![[C#] DataGridView 內顯示民國年](https://c7.staticflickr.com/6/5347/30744452702_d23f17e5e4_z.jpg)

![[C#] ComboBox DropDownList](https://c7.staticflickr.com/6/5808/30539019030_151bae7514.jpg)

![[Azure] Microsoft Azure Storage Explorer-1](https://c8.staticflickr.com/6/5798/30131979263_8d0cf5bcf7_z.jpg)
![[Azure] Microsoft Azure Storage Explorer-2](https://c6.staticflickr.com/6/5638/30131978813_1b9ab539cb.jpg)
![[Azure] Microsoft Azure Storage Explorer-3](https://c8.staticflickr.com/6/5836/30767414135_c4106cbc91_z.jpg)




![[VS] 視窗配置-1](https://c3.staticflickr.com/6/5747/30564229266_80b9f4b7af.jpg)
![[VS] 視窗配置-2](https://c1.staticflickr.com/6/5762/30300882760_e030c9da54.jpg)
![[VS] 視窗配置-3](https://c5.staticflickr.com/6/5805/30300882180_f078a95317.jpg)
![[VS] 視窗配置-5](https://c3.staticflickr.com/6/5716/30300881610_3474c6c0a1.jpg)
![[VS] 視窗配置-6](https://c3.staticflickr.com/6/5773/30300881570_b2a223aa33.jpg)
![[VS] 視窗配置-4](https://c1.staticflickr.com/6/5703/30564227416_6b274fdf6c.jpg)
![[SQL] 基礎 TSQL 練習](https://c7.staticflickr.com/6/5548/30165547870_15bd424632.jpg)
![[WinXP] 開啟重覆執行 chddsk 指令-1](https://c5.staticflickr.com/6/5741/29811952844_81e1e142f5_z.jpg)
![[WinXP] 開啟重覆執行 chddsk 指令-2](https://c2.staticflickr.com/9/8678/29810828633_72f1c69af7.jpg)





![[C#] Microsoft Visual Basic Power Packs 3.0-1](https://c7.staticflickr.com/9/8227/29266286062_10a645a923_z.jpg)
![[C#] DataGridViewComboBoxColumn 連動-2](https://c5.staticflickr.com/8/7479/29266278892_b2f186036e.jpg)
![[LINQ] 目標字串在文字內容出現次數](https://c5.staticflickr.com/9/8557/28570820484_c23bdcdf78.jpg)
![[LINQ] 解析 csv 檔案](https://c7.staticflickr.com/9/8097/28796764550_d48c03625f.jpg)


