用C#的范型建立一个Factory模式的模板:

public struct FactoryConverter<A, B>
{
        public static implicit operator A(FactoryConverter<A, B> conv)
        {
            return Activator.CreateInstance<A>();
        }

        public static implicit operator B(FactoryConverter<A, B> conv)
        {
            return Activator.CreateInstance<B>();
        }
    }

    public class Factory<A, B>
    {
        public FactoryConverter<A, B> Create()
        {
            return new FactoryConverter<A, B>();
        }
    }

使用的时候是这样的:

Factory<Foo, Bar> f = new Factory<Foo, Bar>();
Foo foo = f.Create();
Bar bar = f.Create();

编译器会做类型安全检测.

转载于:https://www.cnblogs.com/rexz/archive/2006/07/09/446301.html

c# 2.0 Factory的实现相关推荐

  1. 设计模式——Abstract Factory(抽象工厂)模式

    抽象的零件:Item类 Item类是Link和Tray类的父类,这样Link和Tray类就具有可替换性了. caption字段表示项目的"标题" makeHTML方法是抽象,需要子 ...

  2. [卡卡西0旗木] [代码设计]对象池设计与打飞机演示

    不好意思,最近实在忙的慌.好久没发文章了.不管怎样,先发个图压压惊.<br/>       是的.这就是大名鼎鼎的打飞机.看到那小飞机没有,是我用Cube拼出来的-_-.不过那不是重点.我 ...

  3. 估算带卷积核二分类0,3的网络的收敛时间和迭代次数

    制作一个网络分类minst的0和3求出这网络的迭代次数曲线表达式n(δ),和准确率表达式p-max(δ),用预期准确率去估算n,并推算需要的时间. 将minst的28*28的图片缩小到9*9,网络用一 ...

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

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

  5. Matlab中的图形句柄(转载)

    在matlab中,每一个对象都有一个数字来标识,叫做句柄.当每次创建一个对象时,matlab就为它建立一个唯一的句柄 句柄中包含有该对象的相关信息参数,可以在后续程序中进行操作,改变其中的参数,以便达 ...

  6. php 商场收银收费系统,使用的策略模式

    <?php//策略模式就是你有很多的方法,选择一种适合自己的,// 单例模式就是只有一个实例对象,不需要每个文件都要加载,比如连接数据库,// 工厂模式就是 //策略模式 优惠系统.工资计算系统 ...

  7. figure文本框乱码 matlab_Matlab给系统自动生成的窗体Figure1改名称

    a=get(gca); x=a.XLim;%获取横坐标上下限 y=a.YLim;%获取纵坐标上下限 k=[0.8 0.9];%给定text相对位置 x0=x(1)+k(1)*(x(2)-x(1));% ...

  8. 网页打印问题,打印设置,打印预览,打印分页,纵打,横打及页面的边距

    1.控制"纵打". 横打"和"页面的边距 (1) <object  id="factory"  style="display ...

  9. (RabbitMQ) Java Client API Guide

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 本篇翻译的是RabbitMQ官方文档关 ...

最新文章

  1. php mysql pdo use_PHP连接到mysql的方法--mysqli和PDO
  2. 【机器学习算法-python实现】扫黄神器-朴素贝叶斯分类器的实现
  3. TF之RNN:实现利用scope.reuse_variables()告诉TF想重复利用RNN的参数的案例
  4. android7.0wine乱码,Wine1.7+QQ6.4+处理中文乱码
  5. ecshop 去版权
  6. php赋值 jq,使用js和jQuery如何实现指定赋值方法
  7. 在线word转html
  8. python布尔类型运算_Python对象类型及其运算方法(详解)
  9. matlab2015a安装秘钥_MATLAB2015a(2015b)安装教程
  10. java中数字循环嵌套举例,在Java程序中,复杂算法可以通过循环语句和的相互嵌套来实现。...
  11. Shaolin(map||set)
  12. 高考改革后计算机老师,高考改革“漏洞”多?2020新高考选科数据曝光!这是选科最佳组合...
  13. 伦敦 quant_伦敦统一用户组8
  14. Linux下的Samba学习(二)------用实验快速学习Samba服务器设置
  15. 2021程序员笔记本电脑推荐
  16. 山经·南山经:堂庭山
  17. 浏览器推荐-以Windows操作系统为例
  18. 【JAVA】项目开发团队分配管理软件
  19. 通过idea的Git使主干项目合并到分支中(主干同步到分支)
  20. 移位运算(左移和右移)

热门文章

  1. 研究生念了些什么东西?
  2. 浙大远程教育计算机作业3,2016浙大远程教育计算机应用基础作业-3剖析
  3. 饿了么风神登录_海底捞首度登陆第三方外卖!联手饿了么全国配送“小火锅”...
  4. odd raio值 是什麼_乳化油相所需的HLB值
  5. 机器学习之 weka学习(一)weka介绍,安装和配置环境变量
  6. [HNOI2009]梦幻布丁
  7. bzoj 1232: [Usaco2008Nov]安慰奶牛cheer【最小生成树】
  8. Java关于Properties用法的总结(一)
  9. runtime--实现篇02(Category增加属性)
  10. 设计模式学习-工厂方法模式