抽象工程模式
2016-01-03 20:41
453 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace KFCandM { class Program { interface IFactory { Burger Makeburger(); Drink Makedrink(); Chicken Makechicken(); } class KFC : IFactory { public Burger Makeburger() { return new Kburger(); } public Drink Makedrink() { return new Kdrink(); } public Chicken Makechicken() { return new Kchicken(); } } class MacDonald : IFactory { public Burger Makeburger() { return new Mburger(); } public Drink Makedrink() { return new Mdrink(); } public Chicken Makechicken() { return new Mchicken(); } } abstract class Burger { public abstract void burger(); } class Kburger : Burger { public override void burger() { Console.WriteLine("KFC's Hamburger is ready..."); } } class Mburger : Burger { public override void burger() { Console.WriteLine("MacDonald's New Orleans Beef Burger is ready..."); } } abstract class Drink { public abstract void drink(); } class Kdrink : Drink { public override void drink() { Console.WriteLine("KFC's coffee is ready..."); } } class Mdrink : Drink { public override void drink() { Console.WriteLine("MacDonald's orange juice is ready..."); } } abstract class Chicken { public abstract void chicken(); } class Kchicken : Chicken { public override void chicken() { Console.WriteLine("KFC's New Orleans chicken wings are ready..."); } } class Mchicken : Chicken { public override void chicken() { Console.WriteLine("MacDonald's spicy chicken wings are ready..."); } } class Food { private Burger _burger; private Drink _drink; private Chicken _chicken; public Burger Burger { get { return _burger; } set { _burger = value; } } public Drink Drink { get { return _drink; } set { _drink = value; } } public Chicken Chicken { get { return _chicken; } set { _chicken = value; } } public void Eatting() { _chicken.chicken(); _burger.burger(); _drink.drink(); Console.WriteLine("The lunch is over"); } private static void Main(string[] args) { IFactory factory1 = new KFC(); IFactory factory2 = new MacDonald(); Food f1 = new Food(); f1.Burger = factory1.Makeburger(); f1.Chicken = factory1.Makechicken(); f1.Drink = factory1.Makedrink(); f1.Eatting(); Food f2 = new Food(); f2.Burger = factory2.Makeburger(); f2.Chicken = factory2.Makechicken(); f2.Drink = factory2.Makedrink(); f2.Eatting(); Console.ReadLine(); } } } }
运行的结果
相关文章推荐
- 部署、收回和删除解决方式----STSADM和PowerShell
- bzoj2734: [HNOI2012]集合选数
- bootstrap+brite实现的html5的联系人增删改查入门教程
- ThinkPHP实现支付宝接口功能
- python环境安装和在eclipse中插件的使用
- 建造者模式
- 蓝懿IOS综合小测试
- 编码介绍
- Cpdetector
- 168,使用KSImageNamed.xcplugin插件显示图像
- 计算两个时间相隔, 同时思考脚本语言
- 什么是静态语言和动态语言?
- 任正非:失败这一天一定会到来
- Java Nio 五、分散/聚集
- 装饰者模式
- linux 下远程执行命令 socket实现
- Struts2和hibernate3的简单应用-登录验证
- docker 制作Dockerfile的SSH服务
- 配置文件activity节点属性
- Myeclipse 10.7 android(安卓) 开发环境搭建