不理解抽象工厂模式是无法彻底明白 Petshop 的,听起来好像名词比较多,不好理解...其实就像一层窗户纸一样!

有两点需要注意一下:
1. 必须明白接口的概念及使用方法
2. IFruit MyFruit = (IFruit)Assembly.Load(path).CreateInstance(sTypeName);
    这一句包含的内容比较多,但是理解了其实也没什么的;
    首先是使用接口声明对象,Assembly 是反射方式加载对象,path 为应用程序的“程序集名称”,sTypeName 为完整的类名
    比方说下面的代码中,程序集的名称在项目属性中指定(我这里使用的和命名空间名称一样),而完整类名就更好理解了!

使用方法:

Code
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label lb = new Label();
        string FruitName = TextBox1.Text.Trim();
        this.form1.Controls.Add(lb);

//声明工厂对象
        FruitFactory MyFruitFactory = new FruitFactory();

//以接口方式声明对象(可以实例化为此接口的任何一个对象)
        IFruit MyFruit = MyFruitFactory.MakeFruit(FruitName);

//调用对象内的方法
        lb.Text = MyFruit.PostName();
    }

工厂定义如下:

Code
using System.Reflection;

namespace vopt.DAL
{
    /// <summary>
    /// 抽象接口定义
    /// </summary>
    public interface IFruit
    {
        string PostName();//返回类名
    }

/// <summary>
    /// 实例类型一
    /// </summary>
    public class Orange : IFruit
    {
        public string PostName()
        {
            return this.ToString();//返回类名
        }
    }

/// <summary>
    /// 实例类型二
    /// </summary>
    public class Apple : IFruit
    {
        public string PostName()
        {
            return this.ToString();//返回类名
        }

}

/// <summary>
    /// 抽象工厂定义
    /// </summary>
    public class FruitFactory
    {
        public IFruit MakeFruit(string className)
        {
            //程序集名称
            string path = "vopt.DAL";

//完整的类名,vopt.DAL.Apple/Orange
            string sTypeName = path + "." + className;

//利用反射加载对象
            IFruit MyFruit = (IFruit)Assembly.Load(path).CreateInstance(sTypeName);

return MyFruit;
        }
    }
}

转载于:https://www.cnblogs.com/jarod99/archive/2009/01/20/1378935.html

抽象工厂模式(C#)相关推荐

  1. 抽象工厂模式 java实例 tclhaier_Unity常用的设计模式_工厂模式系列之抽象工厂模式...

    在工厂方法模式中,工厂只负责生产具体的产品,每一个具体的工厂对应着一个具体的产品,工厂方法也具有唯一性,如果有时候我们需要一个工厂方法提供多个产品而不是一个单一的产品,例如:海尔品牌不止生产海尔TV, ...

  2. 编程模式 之美 -- 抽象工厂模式

    文章目录 1. 解决问题 2. 应用场景 3. 实现如下: C++实现 C语言实现 4. 缺点 1. 解决问题 在工厂方法模式中,我们卖衣服.此时我们为每一种衣服创建不同的工厂,帽子有一个工厂专门创建 ...

  3. 工厂方法模式和抽象工厂模式

    工厂方法模式和抽象工厂模式 工厂方法模式 抽象工厂模式 总结: 工厂方法模式 #include <string> #include <iostream>// Abstract ...

  4. 抽象工厂模式AbstractFactory

    简介 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类.抽象工厂模式又称为Kit模式,属于对象创建型模式. 不同点 ...

  5. 工厂方法模式与抽象工厂模式的区别

    工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类. 一个抽象工厂类,可以派生出多个具体工厂类. 每个具体工厂类只能创建一个具体产品类的实例. 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以 ...

  6. 设计模式C#描述——抽象工厂模式

    设计模式C#描述--抽象工厂模式 阅读此文应先阅读简单工厂模式与工厂方法模式 抽象工厂模式是对象的创建模式,它是工厂方法模式的进一步推广. 假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产 ...

  7. 设计模式之抽象工厂模式(Abstract Factory)摘录

    面向对象系统的分析和设计实际上追求的就是两点:高内聚(Cohesion)和低耦合(Coupling). 23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.Fa ...

  8. 设计模式系列·抽象工厂模式

    前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...

  9. 设计模式之笔记--抽象工厂模式(Abstract Factory)

    抽象工厂模式(Abstract Factory) 定义 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 类图 描述 多个抽象产品 ...

  10. Net设计模式之抽象工厂模式(Abstract Factory Pattern)(1)

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

最新文章

  1. 清华唐杰:GPT-3表示能力已经接近人类了,但它有一个阿喀琉斯之踵
  2. access自动自动累计余额_【大招来临】—— 真 自动化财务报告
  3. CENTOS编译安装APACHE 2.4.6笔记
  4. ios mysql 创建不同的用户表_iOS中数据库-创建表-增删改查数据-基础语法
  5. Python__模拟实现一个ATM+购物商城程序
  6. 技术生态两手抓,打造面向未来的企业级领先数据库
  7. 计算机网络————P3 速率相关的性能指标
  8. HUE与Zookeeper的集成
  9. 芒果数据库备份与还原
  10. 使用SNMP4J的SNMP Walk示例
  11. ACM/ICPC World Finals 2012 B Curvy Little Bottles
  12. CSS单行文本溢出时显示省略号
  13. 怎么快速批量修改图片大小?
  14. 去中心化身份(DID)赛道——构建Web3的社交通行证
  15. 30天自制操作系统第1天 - Hello World
  16. 【ceph】CEPH 单活MDS主从切换流程|REPLAY
  17. 下载喜马拉雅FM的音频
  18. iOS热更新解读(三)—— JSPatch 之于 Swift
  19. 北京卫星地图 百度卫星地图高清版(含道路地名标签叠加)
  20. 项目:招聘网站信息(获取数据+数据分析+数据可视化)

热门文章

  1. ANDROID: 超级好用的ADB FORWARD命令
  2. How to Secure Your Smart Contracts: 6 Solidity Vulnerabilities and how to avoid them (Part 1)
  3. EOS从入门到精通(三)
  4. Linux Kernel 3.10内核源码分析--块设备层request plug/unplug机制
  5. APK加壳【3】通用内存加载dex方案分析
  6. python读取json配置文件_Python简单读取json文件功能示例
  7. python3.4编程_求教python3.4的编程问题
  8. spring boot原理_SpringBoot-02-原理初探之主启动类
  9. python设计_设计和历史常见问题
  10. 清理系统垃圾的快捷方法