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(对象创建)
抽象工厂模式 理解了工厂方法模式,其实抽象工厂和工厂方法模式有很多的相似之处.抽象工厂同样是分离客户端对象的创建和逻辑代码的,但是抽象工厂往往是产生一组数据而不单单是产生一个产品. 抽象工厂提供一个创 ...
随机推荐
- [Angularjs]ng-show和ng-hide
写在前面 上篇文章介绍了ng-select和ng-options指令的使用,这篇文章继续指令的学习,本篇文章讲学习ng-show和ng-hide指令. 系列文章 [Angularjs]ng-selec ...
- 利用Arraylist输入学生的成绩,求出平均分和总分。
Console.WriteLine("请输入学生人数:"); int n=int.Parse(Console.ReadLine()); ArrayList arr= new Arr ...
- P、NP、NPC、NP-Hard问题
转自:http://www.matrix67.com/blog/archives/105 总结 P:能用多项式时间求解的问题NP:能用多项式时间验证的问题(但不知道能不能用多项式时间求解).存在不属于 ...
- ExtJS学习之路第一步:对比jQuery,认识ExtJS
最近纷杂的事情比较多了,奔波ing!所以,Node.js 和Canvas动画系列都停止了,等稳定了再重拾书本继续学习!因为某种原因最近在看ExtJS,分享下学习的心得,希望对同道中人有所帮助. 第一用 ...
- sql复制数据表和表结构
SQL复制数据表 (select * into 与 insert into) select * into 目标表名 from 源表名 insert into 目标表名(fld1, fld2) sele ...
- 微信智慧KTV上线 不怕周末订不到包厢了
周末邀三五好友唱唱歌是件惬意的事,可订包厢是个烦心事,总是people mountain people sea,而且价格比平时高出不少.现在好了,微信智慧KTV上线了,将有效解决传统KTV收银时间集中 ...
- 以DDD为开发模式的设计开发步骤可以是
以DDD为开发模式的设计开发步骤可以是:1)分析需求:2)画出用例图,系统中各个角色如何使用系统,也包括外部系统如何使用系统,也包括系统中到某个时间点自动启动的某些功能(此时角色就是时间):3)针对各 ...
- 从图片加载纹理-使用glut工具
转载 http://blog.csdn.net/dreamcs/article/details/7696069
- Centos下安装mysql 总结
一.MySQL安装 Centos下安装mysql 请点开:http://www.centoscn.com/CentosServer/sql/2013/0817/1285.html 二.MySQL的几个 ...
- 又一款linux提权辅助工具
又一款linux提权辅助工具 – Linux_Exploit_Suggester 2013-09-06 10:34 1455人阅读 评论(0) 收藏 举报 https://github.com/Pen ...