简单实现抽象工厂模式
2015-11-01 17:30
148 查看
UML类图:
FoodFactory接口(抽象工厂)
KFCFactory(具体工厂)
McDonaldFactory(具体工厂)
Food(抽象产品)
Burger(产品类型A)
Chicken(产品类型B)
Drink(产品类型C)
KFC_Burger(具体产品A1)
McDonalds_Burger(具体产品A2)
KFC_Chicken(具体产品B1)
McDonalds_Chicken(具体产品B2)
KFC_Drink(具体产品C1)
McDonalds_Drink(具体产品C2)
Client(测试类)
程序运行结果:
FoodFactory接口(抽象工厂)
interface FoodFactory { Burger CreateBurger(); Chicken CreateChicken(); Drink CreateDrink(); }
KFCFactory(具体工厂)
class KFCFactory:FoodFactory { public Burger CreateBurger() { return new KFC_Burger(); } public Chicken CreateChicken() { return new KFC_Chicken(); } public Drink CreateDrink() { return new KFC_Drink(); } }
McDonaldFactory(具体工厂)
class McDonaldsFactory:FoodFactory { public Burger CreateBurger() { return new McDonalds_Burger(); } public Chicken CreateChicken() { return new McDonalds_Chicken(); } public Drink CreateDrink() { return new McDonalds_Drink(); } }
Food(抽象产品)
interface Food { void deal(); }
Burger(产品类型A)
class Burger:Food { public virtual void deal() { } }
Chicken(产品类型B)
class Chicken:Food { public virtual void deal() { } }
Drink(产品类型C)
class Drink:Food { public virtual void deal() { } }
KFC_Burger(具体产品A1)
class KFC_Burger:Burger { public override void deal() { Console.WriteLine("您的KFC汉堡"); } }
McDonalds_Burger(具体产品A2)
class McDonalds_Burger:Burger { public override void deal() { Console.WriteLine("您的麦当劳汉堡"); } }
KFC_Chicken(具体产品B1)
class KFC_Chicken:Chicken { public override void deal() { Console.WriteLine("您的KFC炸鸡"); } }
McDonalds_Chicken(具体产品B2)
class McDonalds_Chicken:Chicken { public override void deal() { Console.WriteLine("您的麦当劳炸鸡"); } }
KFC_Drink(具体产品C1)
class KFC_Drink:Drink { public override void deal() { Console.WriteLine("您的KFC饮料"); } }
McDonalds_Drink(具体产品C2)
class McDonalds_Drink:Drink { public override void deal() { Console.WriteLine("您的麦当劳饮料"); } }
Client(测试类)
class Client { static void Main(string[] args) { FoodFactory factory=new McDonaldsFactory(); Burger burger = factory.CreateBurger(); Chicken chicken = factory.CreateChicken(); Drink drink = factory.CreateDrink(); burger.deal(); chicken.deal(); drink.deal(); Console.ReadLine(); } }
程序运行结果:
相关文章推荐
- clean之后R文件消失
- 【Little_things】事件驱动的带界面的Client/Server聊天小程序(java socket)
- 高速网络下的 Netmap 单 RX 队列内核旁路技术
- 传输层详解
- 下载文件
- System
- 大话重构之系统重构
- oracle .bash_profile
- MVC中在一个视图中,怎么加载另外一个视图?
- C学习笔记——接触C语言
- hdu5536Chip Factory 字典树与异或 2015ACM/ICPC亚洲区长春站现场赛
- lamp 模块化+vsftd+samba
- 拼图小游戏”ST--拼图“开发篇之主要功能的实现(二)
- 专业软件测试人员发展的未来
- Swift类型选择(Type Casting)
- hdu 1063 Exponentiatio(East Central North America 1988)
- Leetcode133: Unique Paths II
- kali2.0中怎么给火狐浏览器设置代理
- 8.条件和循环
- vsftpd说明,有用,转了