抽象工厂模式-约会吃鸡翅薯条让麦当劳肯德基去做吧
2011-12-27 14:34
239 查看
抽象工厂模式比喻
[align=left]追女孩子少不了请吃饭,麦当劳的鸡翅、薯条和肯德基的鸡翅、薯条都是女孩子爱吃的东西,虽然口味有所不同,但不管你带女生去麦当劳或肯德基,只管向服务员说“来两个鸡翅两包薯条”就行了。麦当劳和肯德基就是生产鸡翅、薯条的Factory,这个过程就是抽象工厂模式。[/align]
抽象工厂模式意图
抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖的接口,而无需指定它们具体的类。
抽象工厂模式类图
抽象工厂模式实现
/// <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();
}
}
抽象工厂模式总结
抽象工厂最大的好处就是约会时可以很方便的选择某一家快餐店,并且快餐店的生产流程和我们客户之间没有关系,但是如果女生想喝饮料或者想选择必胜客那就麻烦了,但是一样可以扩展。
朱利IT博客原创博文:文章地址:http://www.zhuli8.com/sjms/factory.html
[align=left]追女孩子少不了请吃饭,麦当劳的鸡翅、薯条和肯德基的鸡翅、薯条都是女孩子爱吃的东西,虽然口味有所不同,但不管你带女生去麦当劳或肯德基,只管向服务员说“来两个鸡翅两包薯条”就行了。麦当劳和肯德基就是生产鸡翅、薯条的Factory,这个过程就是抽象工厂模式。[/align]
抽象工厂模式意图
抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖的接口,而无需指定它们具体的类。
抽象工厂模式类图
抽象工厂模式实现
/// <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();
}
}
抽象工厂模式总结
抽象工厂最大的好处就是约会时可以很方便的选择某一家快餐店,并且快餐店的生产流程和我们客户之间没有关系,但是如果女生想喝饮料或者想选择必胜客那就麻烦了,但是一样可以扩展。
朱利IT博客原创博文:文章地址:http://www.zhuli8.com/sjms/factory.html
相关文章推荐
- 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory
- 女顾客起诉肯德基索赔 薯条里吃出“头发丝”
- 为什么肯德基和麦当劳总是开在一起?
- [IT最前沿--有点道理] 从麦当劳肯德基到iPhone/iPad,这是个触摸的时代
- <【麦当劳 肯德基】是美国在中国的基因武器试验场(转)>
- 帮你省钱 麦当劳肯德基消费指南
- 麦当劳肯德基供应商使用变质过期肉:吃不死人
- 抽象工厂模式——肯德基消费
- 帮你省钱 麦当劳肯德基消费指南
- 去麦当劳、肯德基吃饭一定要记得要发票!!!
- Java使用抽象工厂模式实现的肯德基消费案例详解
- 【麦当劳肯德基】是美国在中国的基因武器试验场
- 麦当劳与肯德基,域名已见高下
- 树言树语:肯德基有的是钱,麦当劳在笑他
- 麦当劳送薯条活动坑薯条设想,实践被失败
- 抽象工厂模式——肯德基消费
- 去麦当劳、肯德基消费一定要记得拿发票!
- 树言树语:肯德基有的是钱,麦当劳在笑他
- 去麦当劳、肯德基吃饭一定要记得要发票[ZT]
- 麦当劳理论