4.抽象工厂模式(Abstract Factory)
using System;
using System.Reflection; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//这样我湖南工厂换广州工厂改抽象工厂类的实例对象就可以了,对产品鸭架,鸭脖没影响
//AbstractFactory nanChangFactory = new GuanzhouFactory();
AbstractFactory nanChangFactory = new HuNanFactory();
YaBo _yabo = nanChangFactory.CreateYaBo();
YaJia _yajia = nanChangFactory.CreateYaJia();
_yabo.Make();
_yajia.Make();
Console.ReadLine();
}
} /// <summary>
/// 抽象工厂类,提供创建两个不同地方的鸭架和鸭脖的接口
/// </summary>
public abstract class AbstractFactory
{
// 抽象工厂提供创建一系列产品的接口,这里作为例子,只给出了绝味中鸭脖和鸭架的创建接口
public abstract YaBo CreateYaBo();
public abstract YaJia CreateYaJia();
} /// <summary>
/// 广州绝味工厂负责制作广州的鸭脖和鸭架
/// </summary>
public class GuanzhouFactory : AbstractFactory
{
public override YaBo CreateYaBo()
{
return new GuanzhouYaBo();
} public override YaJia CreateYaJia()
{
return new GuanzhouYaJia();
}
} /// <summary>
/// 湖南绝味工厂负责制作湖南的鸭脖和鸭架
/// </summary>
public class HuNanFactory : AbstractFactory
{
public override YaBo CreateYaBo()
{
return new HuNanYaBo();
} public override YaJia CreateYaJia()
{
return new HuNanYaJia();
}
} /// <summary>
/// 鸭架抽象类,供每个地方的鸭架类继承
/// </summary>
public abstract class YaBo
{
public abstract void Make();
} /// <summary>
/// 鸭架抽象类,供每个地方的鸭架类继承
/// </summary>
public abstract class YaJia
{
public abstract void Make();
} /// <summary>
/// 广州的鸭脖类,一般辣
/// </summary>
public class GuanzhouYaBo : YaBo
{
public override void Make()
{
Console.WriteLine("广州的鸭脖");
}
} /// <summary>
/// 湖南的鸭脖类,比较辣
/// </summary>
public class HuNanYaBo : YaBo
{
public override void Make()
{
Console.WriteLine("湖南的鸭脖");
}
} /// <summary>
/// 广州的鸭架类,一般辣
/// </summary>
public class GuanzhouYaJia : YaJia
{
public override void Make()
{
Console.WriteLine("广州的鸭架");
}
} /// <summary>
/// 湖南的鸭架类,比较辣
/// </summary>
public class HuNanYaJia : YaJia
{
public override void Make()
{
Console.WriteLine("湖南的鸭架");
}
}
}
4.抽象工厂模式(Abstract Factory)的更多相关文章
- .NET设计模式(2):1.2 抽象工厂模式(Abstract Factory)
概述 抽象工厂模式(Abstract Factory)是所有形态的工厂模式中最为抽象和最具一般性的一种形态.抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式.抽象工厂模式可以向客户端提供一个接口 ...
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factor ...
- 【设计模式】抽象工厂模式 Abstract Factory Pattern
简单工厂模式是一个工厂类根据工厂方法的参数创建不出不同的产品, 工厂方法模式是每一个产品都有一个一一对应的工厂负责创建该产品.那么今天要讲的抽象工厂模式是一个工厂能够产生关联的一系列产品.抽象工厂模式 ...
- 设计模式 - 抽象工厂模式(abstract factory pattern) 具体解释
抽象工厂模式(abstract factory pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/2709 ...
- 抽象工厂模式(Abstract Factory)C#实例
抽象工厂模式(Abstract Factory)C#实例 本文出处http://www.dofactory.com/net/abstract-factory-design-pattern 一.场景描述 ...
- 二十四种设计模式:抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式(Abstract Factory Pattern) 介绍提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 示例有Message和MessageModel,Messag ...
- 【UE4 设计模式】抽象工厂模式 Abstract Factory Pattern
概述 描述 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类:具体的工厂负责实现具体的产品实例 抽象工厂中每个工厂可以创建多种产品(如苹果公司生产iPhone.iPad): 工厂方法 ...
- Net设计模式实例之抽象工厂模式(Abstract Factory Pattern)
一.抽象工厂模式简介(Bref Introduction) 抽象工厂模式(Abstract Factory Pattern),提供一个创建一系列相关或者相互依赖对象的接口,而无需制定他们的具体类.优点 ...
- C#设计模式——抽象工厂模式(Abstract Factory Pattern)
一.概述在软件开发中,常常会需要创建一系列相互依赖的对象,同时,由于需求的变化,往往存在较多系列对象的创建工作.如果采用常规的创建方法(new),会造成客户程序和对象创建工作的紧耦合.对此,抽象工厂模 ...
- Objective-C设计模式——抽象工厂模式Abstract Factory(对象创建)
抽象工厂模式 理解了工厂方法模式,其实抽象工厂和工厂方法模式有很多的相似之处.抽象工厂同样是分离客户端对象的创建和逻辑代码的,但是抽象工厂往往是产生一组数据而不单单是产生一个产品. 抽象工厂提供一个创 ...
随机推荐
- 嵌入式实时操作系统μCOS原理与实践+事件部分代码
//事件等待表的初始化函数:pevent表示事件控制块的指针#if (OS_EVENT_EN)void OS_EventWaitListInit (OS_EVENT *pevent){ INT ...
- Ajax相同url的请求,IE缓存问题
最近做一个小项目,其中的一个页面如下,需要实现异步改变“是否推荐”的状态. 请求的代码如下: $.get("/Contorller/Edit", { id: id }, funct ...
- 找出现有Vector或ArrayList或数组中重复的元素&给现有Vector或ArrayList或数组去重
//直接上代码: public static void main(String[] args) { List<Integer> list = new Vector<Integer&g ...
- delete this及堆破坏检测方法
作者: Bruce 日期: 2012年06月03日 04:20 周日 发表评论 (0) 查看评论 --END*1--> 0 条评论 --END*2-->1,837 人阅读 程序BU ...
- Excel加密的Sheet如何hack
Excel的加密sheet如何hack: 思路:在VBA中添加穷举法模块函数并运行 源代码: Sub PasswordBreaker() 'Breaks worksheet password prot ...
- Hello Kitty微信主题很可爱?小心财产安全!
个性化是产品服务的一个趋势.微信很火,可为什么微信主题只有一个呢?你让那些小女生情何以堪?这时HelloKitty微信主题.大嘴猴.哆啦A梦等一大批主题在网上出现了,有些打着免费的旗号却做着盗号的勾当 ...
- crontab添加定时任务
(这些文章都是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) crontab是LINUX系统下的定时任务触发器,常用的方法如下: crontab -l ...
- Capistrano SSH::AuthenticationFailed, not prompting for password
文章是从我的个人博客上粘贴过来的, 大家也可以访问 www.iwangzheng.com 在本地执行cap deploy部署的时候会报错: connection failed for: 11.11.1 ...
- 在C/C++程序里打印调用栈信息
我们知道,GDB的backtrace命令可以查看堆栈信息.但很多时候,GDB根本用不上.比如说,在线上环境中可能没有GDB,即使有,也不太可能让我们直接在上面调试.如果能让程序自己输出调用栈,那是最好 ...
- Kruskal vs Borůvka
做了个对比.Borůvka算法对于稠密图效果特别好.这两个都是求生成森林的算法.Prim+heap+tarjan过于难写不写了. V=200,E=1000 Kruskal method 4875048 ...