抽象工厂模式
来源:互联网 发布:淘宝海外旗舰店真假 编辑:程序博客网 时间:2024/06/09 20:43
原文链接:http://blog.jobbole.com/78067/
提供一个创建产品的接口来负责创建相关或依赖的对象,而不具体明确指定具体类
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace AbstractFactoryPattern{ /// <summary> /// 下面以绝味鸭脖连锁店为例子演示下抽象工厂模式 /// 因为每个地方的喜欢的口味不一样,有些地方喜欢辣点的,有些地方喜欢吃不辣点 /// 客户端调用 /// </summary> class Program { static void Main(string[] args) { // 南昌工厂制作南昌的鸭脖和鸭架 AbstractFactory nanChangFactory = new NanChangFactory(); YaBo nanChangYabo = nanChangFactory.CreateYaBo(); nanChangYabo.Print(); YaJia nanChangYajia = nanChangFactory.CreateYaJia(); nanChangYajia.Print(); // 上海工厂制作上海的鸭脖和鸭架 AbstractFactory shangHaiFactory = new ShangHaiFactory(); shangHaiFactory.CreateYaBo().Print(); shangHaiFactory.CreateYaJia().Print(); Console.Read(); } } /// <summary> /// 抽象工厂类,提供创建两个不同地方的鸭架和鸭脖的接口 /// </summary> public abstract class AbstractFactory { // 抽象工厂提供创建一系列产品的接口,这里作为例子,只给出了绝味中鸭脖和鸭架的创建接口 public abstract YaBo CreateYaBo(); public abstract YaJia CreateYaJia(); } /// <summary> /// 南昌绝味工厂负责制作南昌的鸭脖和鸭架 /// </summary> public class NanChangFactory : AbstractFactory { // 制作南昌鸭脖 public override YaBo CreateYaBo() { return new NanChangYaBo(); } // 制作南昌鸭架 public override YaJia CreateYaJia() { return new NanChangYaJia(); } } /// <summary> /// 上海绝味工厂负责制作上海的鸭脖和鸭架 /// </summary> public class ShangHaiFactory : AbstractFactory { // 制作上海鸭脖 public override YaBo CreateYaBo() { return new ShangHaiYaBo(); } // 制作上海鸭架 public override YaJia CreateYaJia() { return new ShangHaiYaJia(); } } /// <summary> /// 鸭脖抽象类,供每个地方的鸭脖类继承 /// </summary> public abstract class YaBo { /// <summary> /// 打印方法,用于输出信息 /// </summary> public abstract void Print(); } /// <summary> /// 鸭架抽象类,供每个地方的鸭架类继承 /// </summary> public abstract class YaJia { /// <summary> /// 打印方法,用于输出信息 /// </summary> public abstract void Print(); } /// <summary> /// 南昌的鸭脖类,因为江西人喜欢吃辣的,所以南昌的鸭脖稍微会比上海做的辣 /// </summary> public class NanChangYaBo : YaBo { public override void Print() { Console.WriteLine("南昌的鸭脖"); } } /// <summary> /// 上海的鸭脖没有南昌的鸭脖做的辣 /// </summary> public class ShangHaiYaBo : YaBo { public override void Print() { Console.WriteLine("上海的鸭脖"); } } /// <summary> /// 南昌的鸭架 /// </summary> public class NanChangYaJia : YaJia { public override void Print() { Console.WriteLine("南昌的鸭架子"); } } /// <summary> /// 上海的鸭架 /// </summary> public class ShangHaiYaJia : YaJia { public override void Print() { Console.WriteLine("上海的鸭架子"); } }}
UML类图:
0 0
- 工厂模式 -- 抽象工厂
- 工厂模式-抽象工厂
- 工厂模式-抽象工厂
- 工厂模式/抽象工厂模式
- 工厂模式&&抽象工厂模式
- 工厂模式---抽象工厂模式
- 工厂模式&抽象工厂模式
- 工厂模式,抽象工厂模式
- 【模式】抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 工厂方法,抽象工厂模式
- 2,工厂模式--抽象工厂
- C#工厂模式-抽象工厂
- 工厂模式与抽象工厂
- 抽象工厂设计模式
- 抽象工厂模式
- HDU:1879 继续畅通工程(kruskal)
- p243 第六题 (不完整)
- 简易在线投票系统(php)——发布投票页面
- WIFI 信道
- android中关于notification的最新用法
- 抽象工厂模式
- 【Android】使用SeekBar调整图像的色度、饱和及度亮度
- [LeetCode-119] Pascal's Triangle II(帕斯卡三角形第K行数据)
- 基于连通性状态压缩的动态规划--【插头DP】模板超级详细解释
- linux信息安全_SSL,PKI,CA篇
- POJ Avoid The Lakes
- Openwrt 硬改过程记录
- WebRTC(RTCWeb)学习--------阿冬专栏!!!!
- 创建上下文菜单