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)的更多相关文章

  1. .NET设计模式(2):1.2 抽象工厂模式(Abstract Factory)

    概述 抽象工厂模式(Abstract Factory)是所有形态的工厂模式中最为抽象和最具一般性的一种形态.抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式.抽象工厂模式可以向客户端提供一个接口 ...

  2. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)

    原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factor ...

  3. 【设计模式】抽象工厂模式 Abstract Factory Pattern

    简单工厂模式是一个工厂类根据工厂方法的参数创建不出不同的产品, 工厂方法模式是每一个产品都有一个一一对应的工厂负责创建该产品.那么今天要讲的抽象工厂模式是一个工厂能够产生关联的一系列产品.抽象工厂模式 ...

  4. 设计模式 - 抽象工厂模式(abstract factory pattern) 具体解释

    抽象工厂模式(abstract factory pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/2709 ...

  5. 抽象工厂模式(Abstract Factory)C#实例

    抽象工厂模式(Abstract Factory)C#实例 本文出处http://www.dofactory.com/net/abstract-factory-design-pattern 一.场景描述 ...

  6. 二十四种设计模式:抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式(Abstract Factory Pattern) 介绍提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 示例有Message和MessageModel,Messag ...

  7. 【UE4 设计模式】抽象工厂模式 Abstract Factory Pattern

    概述 描述 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类:具体的工厂负责实现具体的产品实例 抽象工厂中每个工厂可以创建多种产品(如苹果公司生产iPhone.iPad): 工厂方法 ...

  8. Net设计模式实例之抽象工厂模式(Abstract Factory Pattern)

    一.抽象工厂模式简介(Bref Introduction) 抽象工厂模式(Abstract Factory Pattern),提供一个创建一系列相关或者相互依赖对象的接口,而无需制定他们的具体类.优点 ...

  9. C#设计模式——抽象工厂模式(Abstract Factory Pattern)

    一.概述在软件开发中,常常会需要创建一系列相互依赖的对象,同时,由于需求的变化,往往存在较多系列对象的创建工作.如果采用常规的创建方法(new),会造成客户程序和对象创建工作的紧耦合.对此,抽象工厂模 ...

  10. Objective-C设计模式——抽象工厂模式Abstract Factory(对象创建)

    抽象工厂模式 理解了工厂方法模式,其实抽象工厂和工厂方法模式有很多的相似之处.抽象工厂同样是分离客户端对象的创建和逻辑代码的,但是抽象工厂往往是产生一组数据而不单单是产生一个产品. 抽象工厂提供一个创 ...

随机推荐

  1. Stream Byte[] 转换

    public byte[] StreamToBytes(Stream stream) { byte[] bytes = new byte[stream.Length]; stream.Read(byt ...

  2. Fedora 20下配置samba服务器

    1 安装samba [root@localhost ~]# yum –y install samba   ← 通过网络安装samba yum -y install samba-client    // ...

  3. Dedecms最新版本存储型XSS

    由于编辑文章的模板参数 typeid2可控,导致存储XSS发生. dedecms/dede/templets/article_edit.htm页面316-325行代码如下: <tr> &l ...

  4. Mvc3提交表格验证(转载)

    Model层:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System ...

  5. python -os、sys

    个人还不是很懂 os操作文件目录.sys针对系统环境的交互.大概是这样 使用os.system函数运行其他程序 os模块中的system()函数可以方便地运行其他程序或者脚本.其函数原型如下所示. o ...

  6. To the Max

    To the Max --------------------------------------------------------------------------------Time Limi ...

  7. java类的加载过程

    1.类的加载顺序 (1)JVM在首次加载类时会对  静态初始化块.静态成员变量. 静态方法进行一次初始化. (2)只有在调用new方法时才会创建类的实例. (3)对象创建过程: 首先执行父类(如果有) ...

  8. [Effective JavaScript 笔记]第24条:使用变量保存arguments对象

    迭代器(iterator)是一个可以顺序存取数据集合的对象.其一个典型的API是next方法.该方法获得序列中的下一个值. 迭代器示例 题目:希望编写一个便利的函数,它可以接收任意数量的参数,并为这些 ...

  9. [Effective JavaScript 笔记]第32条:始终不要修改__proto__属性

    __proto__属性很特殊,它提供了Object.getPrototypeOf方法所不具备的额外能力,即修改对象原型链接的能力. 避免修改__proto__属性的最明显的原因是可移植性的问题.并不是 ...

  10. Unity模型导入的若干问题

    原地址:http://tieba.baidu.com/p/2807225555 我觉得有三点感觉在导出时比较重要的1.单位的设置3dsmax系统单位设置就设成厘米显示单位公制也设成厘米这样在max里的 ...