设计模式之三:抽象工厂模式
来源:互联网 发布:王者荣耀 英雄成长数据 编辑:程序博客网 时间:2024/05/22 03:29
设计模式之三:抽象工厂模式
http://www.taidous.com/thread-48169-1-1.html
产品类1的实现类:鸡腿
抽象产品类2的实现类:咖啡
抽象工厂类:
产品等级1的实现类: 经济型套餐
产品等级2的实现类:豪华型套餐
http://www.taidous.com/thread-48169-1-1.html
(出处: 【泰斗社区】-专注互联网游戏和应用的开发者平台)
抽象工厂模式(Abstract Factory Pattern):
定义:Provide an interface for creating families of related or dependent objects without specifying their concrete classes.(为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类)。
图:
优点:
1、抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建。
2、当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。
3、增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。
缺点:
扩展非常困难
实现:
抽象产品类1
///<summary> ///Product族1,KFC食品 ///</summary> public abstract class KFCFood { public abstract void Display(); }
public class Chicken :KFCFood { public override void Display() { Console.WriteLine("鸡腿 + 1"); } }
产品类1的实现类:鸡翅
public class Wings :KFCFood { public override void Display() { Console.WriteLine("鸡翅 + 1"); } }
抽象产品类2
///<summary>[/font][/color] ///Product族2,KFC饮料 ///</summary> public abstract class KFCDrink { public abstract void Display(); }
抽象产品类2的实现类 :可乐
public class Coke :KFCDrink { public override void Display() { Console.WriteLine("可乐 + 1"); } }
抽象产品类2的实现类:咖啡
public class Coffee :KFCDrink { public override void Display() { Console.WriteLine("咖啡 + 1"); } }
抽象工厂类:
///<summary> ///抽象工厂,生产套餐 ///</summary> public interface IKFCFactory { KFCFood CreateFood(); KFCDrink CreateDrink(); }}
///<summary> ///经济型套餐,包括鸡翅和可乐 ///</summary> public class CheapPackageFactory :IKFCFactory { public KFCFood CreateFood() { returnnew Wings(); } public KFCDrink CreateDrink() { returnnew Coke(); } }
///<summary> ///豪华型套餐,包括鸡腿和咖啡 ///</summary> public class LuxuryPackageFactory :IKFCFactory { public KFCFood CreateFood() { returnnew Chicken(); } public KFCDrink CreateDrink() { returnnew Coffee(); } }
场景实现:
class Program { static void Main(string[] args) { IKFCFactory factory =new CheapPackageFactory(); KFCFood food =factory.CreateFood(); food.Display(); KFCDrink drink =factory.CreateDrink(); drink.Display(); } }
0 0
- 三 设计模式之抽象工厂模式
- 设计模式之三--抽象工厂模式
- 设计模式之三:抽象工厂模式
- 设计模式之三抽象工厂模式
- 设计模式之三:抽象工厂模式
- 设计模式之三:抽象工厂模式
- 设计模式之三:抽象工厂模式
- 设计模式之抽象工厂模式(三)
- 设计模式之工厂模式(三)之抽象工厂模式
- 设计模式培训之三:抽象工厂
- 设计模式培训之三:抽象工厂
- Java设计模式之三(抽象工厂模式)
- 设计模式之三 抽象工厂模式 Abstract Factory
- 设计模式系列之三:抽象工厂模式
- 设计模式(三)---抽象工厂模式
- 设计模式(三)--抽象工厂模式
- 设计模式(三)---抽象工厂模式
- 设计模式(三)抽象工厂模式
- 非 ARC 版本 与 ARC
- sqlplus登录\连接命令、sqlplus命令的使用大全
- UML 画 for 循环的多种方式
- Edit Distance
- 常用表单正则验证
- 设计模式之三:抽象工厂模式
- Java面试题(二)
- python 常用点总结
- 最短路——洛谷P2296 寻找道路
- 使用redis集群+tomcat缓存共享下session丢失问题产生原因以及解决
- MySQL主从复制搭建,基于日志(binlog)
- MYSQL中TIMESTAMP类型的默认值理解
- Vue2.0如何改变定界符
- JavaScript异步编程的Promise模式