抽象工廠模式比喻
抽象工廠模式類圖
抽象工廠模式實現
/// <summary>
/// 抽象工廠接口-快餐店,它里面應該可以做雞翅和薯條
/// </summary>
interface IQuikMeal
{
IWing CreateWing();
IChips CreateChips();
}
/// <summary>
/// 具體工廠-肯德基,做自己配方的雞翅、薯條
/// </summary>
class KFC:IQuikMeal
{
public IWing CreateWing()
{
return new KFC_Wing();
}
public IChips CreateChips()
{
return new KFC_Chips();
}
}
/// <summary>
/// 具體工廠-麥當勞,做自己配方的雞翅、薯條
/// </summary>
class MCD : IQuikMeal
{
public IWing CreateWing()
{
return new MCD_Wing();
}
public IChips CreateChips()
{
return new MCD_Chips();
}
}
/// <summary>
/// 抽象產品-雞翅,它有肯德基和麥當勞兩家快餐店生產
/// </summary>
interface IWing
{
string GetWing();
}
/// <summary>
/// 肯德基做出來的雞翅
/// </summary>
class KFC_Wing : IWing
{
public string GetWing()
{
return "KFC's Wing!";
}
}
/// <summary>
/// 麥當勞做出來的雞翅
/// </summary>
class MCD_Wing : IWing
{
public string GetWing()
{
return "MCD's Wing!";
}
}
/// <summary>
/// 抽象產品-薯條,它有兩家快餐店生產
/// </summary>
interface IChips
{
string GetChips();
}
/// <summary>
/// 肯德基做出來的薯條
/// </summary>
class KFC_Chips : IChips
{
public string GetChips()
{
return "KFC's Chips!";
}
}
/// <summary>
/// 麥當勞做出來的薯條
/// </summary>
class MCD_Chips : IChips
{
public string GetChips()
{
return "MCD's Chips!";
}
}
/// <summary>
/// 客戶端應用
/// </summary>
class Program
{
static void Main(string[] args)
{
//MM選擇肯德基,如果選擇麥當勞,只需將KFC換成MCD即可
IQuikMeal meal = new KFC();
//我要吃雞翅
Console.WriteLine(meal.CreateWing().GetWing());
//我要吃薯條
Console.WriteLine(meal.CreateChips().GetChips());
Console.Read();
}
}
抽象工廠模式總結
抽象工廠最大的好處就是約會時可以很方便的選擇某一家快餐店,並且快餐店的生產流程和我們客戶之間沒有關系,但是如果女生想喝飲料或者想選擇必勝客那就麻煩了,但是一樣可以擴展。