设计模式-工厂模式学习(初级)
个人不善于表达 思路见于代码 [欢迎大神拍砖批评指点]
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; using System.Reflection;namespace SelfToolsHelper {public interface Ilog{void CreateLog();}public class EventLog : Ilog{public void CreateLog(){Console.Write("Create EventLog");}}public class TxtLog : Ilog{public void CreateLog(){Console.Write("createTxtLog");}}public class DiskLog : Ilog{public void CreateLog(){Console.Write("Create DiskLog");}}public interface IFactory{Ilog CreateLogFactory();}public class EventFactory : IFactory{public Ilog CreateLogFactory(){return new EventLog();}}public class TexFactory : IFactory{public Ilog CreateLogFactory(){return new TxtLog();}}public class DiskFactory : IFactory{public Ilog CreateLogFactory(){return new DiskLog();}}//思考 要是有1w个 log 那 我要建立两万个class (log and factory) ,多付出1w的工作量。//是否可以优化我的factory方法?public class FactoryNew<T>{public object CreateLogInstance(){return Activator.CreateInstance<T>();}} public class FactoryTEST{public void TEST(){IFactory factory = new DiskFactory();Ilog log = factory.CreateLogFactory();log.CreateLog();//面向接口抽象,打印出:Create DiskLog }public void TestNew(){FactoryNew<EventLog> eventfact =new FactoryNew<EventLog> ();Ilog log = eventfact.CreateLogInstance() as EventLog;log.CreateLog();}public void TestNewSecond(){FactoryNew<DiskLog> diskFactory = new FactoryNew<DiskLog>();Ilog log = diskFactory.CreateLogInstance() as DiskLog;log.CreateLog();}//以上两个方法是在我知道 到底是使用哪种log方法的测试。、//现在我不知道我到底要实例化哪种log 而是读取配置文件 来动态创建 这样该怎么办? //思路 我应该从配置文件里面知道我到底改实例一个什么泛型的工厂 就是说我应该传递什么类型进入 泛型工厂?// 假如 配置在了config文件中。//1<appSettings>//<add key="logtype" value="EventLog"></add>//</appSettings>public void TestNewThrid(){string strfactoryName = ConfigurationSettings.AppSettings["logtype"];#region 此部分是思考过程object o= Activator.CreateInstance(Assembly.GetCallingAssembly().FullName, strfactoryName);Type t = o.GetType();//得带log type。 然后根据logtype 再声明 facttorynew<T>;object obj =Assembly.Load(Assembly.GetCallingAssembly().FullName).CreateInstance(strfactoryName);// FactoryNew < typeof(obj) > diskFactory = new FactoryNew< typeof(obj) >(); 走不通。// obj.调用方法。。。。。。。 失败了!//思考,我为什要先创建factory 再创建log?!!! 我的目的是创建Log 。额 log log已经创建了。。。。// 这里才是真正实现,注意 配置config的时候直接使用 log Type!跳过FactoryIlog logObj = Assembly.Load(Assembly.GetCallingAssembly().FullName).CreateInstance(strfactoryName) as Ilog;logObj.CreateLog();//搞定。//#endregion} }} // 参考资料 http://terrylee.cnblogs.com/archive/2006/01/04/310716.html
2013年9月26日 14:25:51
转载于:https://www.cnblogs.com/cdemo/p/3340736.html
设计模式-工厂模式学习(初级)相关推荐
- 设计模式-工厂模式(学习)
设计模式-工厂模式(学习) 在程序的世界里,就像射雕英雄传一样,我们的技能就像是武功一样,我们只有不断去学习练习才能有机会像郭靖一样成为"天下第一". 我认为技能和武功是很类似的, ...
- java设计模式工厂模式_Java中的工厂设计模式
java设计模式工厂模式 Welcome to the Factory Design Pattern in Java tutorial. Factory Pattern is one of the C ...
- Python 设计模式 - 工厂模式
精通Python设计模式第二版 第 1 章 工厂模式 学习笔记 工厂模式 工厂模式的思想意在简化对象的创建过程.调用者(客户端)不清楚对象的来源以及生成对象的方式,调用者只需要调用某个方法或者实例某个 ...
- Java设计模式-工厂模式(3)抽象工厂模式
在Java设计模式-工厂模式(2)工厂方法模式 我们知道了工厂方法模式解决了简单工厂模式中的缺陷,做到了满足开闭原则,但是时代是进步的,进而又产生新的问题,工厂难道只能生产一种东西吗.我们所见到的工厂 ...
- Java设计模式-工厂模式(2)工厂方法模式
在Java设计模式-工厂模式(1)简单工厂模式 中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而"工厂方法模式"是对简单工厂模式的进一步抽象化,其好处是可以使系统在不 ...
- Java设计模式-工厂模式(1)简单工厂模式
Java设计模式-工厂模式(1)简单工厂模式 一.前言 1)例子 2)类图关系 3)代码实现 二.简单工厂模式 2.1.概述: 2.2.类图关系: 2.3.代码修改: 2.4.优缺点 2.5.扩展-简 ...
- 设计模式---工厂模式
设计模式---工厂模式 工厂方法模式 概述:工厂方法模式中抽象工厂负责定义创建对象的接口,具体创建工作由继承抽象工厂的具体类实现. 优点:客户端不需要再负责对象的创建,从而明确了各个类的职责,如果有新 ...
- java设计模式工厂模式_Java中的复合设计模式
java设计模式工厂模式 Composite pattern is one of the Structural design pattern. Composite design pattern is ...
- java设计模式工厂模式_Java中的桥梁设计模式
java设计模式工厂模式 Today we will look into Bridge Design Pattern in java. When we have interface hierarchi ...
最新文章
- 搜索-----棋盘问题
- 华科计算机国家专项分数线,5所985高校中招,华科、中大被捡漏,专项计划录取异常,原因透析...
- Golang之pprof使用
- 实验13 简单FTP 程序设计
- 能pingt通外部的Ip和dns,但上不了网络
- android tv 帮助,android TV端各类焦点问题
- 苹果AirPods 2又有新消息了!具备防滑涂层和新配色
- 小米cc9出厂线刷包_小米CC9手机忘记密码一键刷机解锁 | 线刷宝刷机工具刷机包下载...
- 卖文玩微商怎么引流?在泛滥的人群中脱颖而出
- JDK7和JDK8的区别
- 服务器分辨率无法修改器,win10解决分辨率无法修改的方法攻略
- c语言课英语单词,课程英语单词大全:英语单词32个课程加翻译
- window用户切换
- 建模与仿真matlab论文,matlab+fluent等温容器建模与仿真研究
- jQuery实现简单分页
- D4.1 About an initiating master
- 将文件夹添加到Windows 7 Media Center中的影片库
- 手写PE结构解析工具
- P1000 超级玛丽游戏题解
- A Two-stage Unsupervised Approach for Low light Image Enhancement(一种两阶段无监督的微光图像增强方法)