抽象工厂模式比喻
抽象工厂模式类图
抽象工厂模式实现
/// <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();
}
}
抽象工厂模式总结
抽象工厂最大的好处就是约会时可以很方便的选择某一家快餐店,并且快餐店的生产流程和我们客户之间没有关系,但是如果女生想喝饮料或者想选择必胜客那就麻烦了,但是一样可以扩展。