我也设计模式——6.注册工厂
2007-04-12 22:03
218 查看
这一节不讲模式,讲注册工厂,是为了下一节研究Flyweight做准备。
注册工厂,就是建立一个小型“DB”,采用注册方式,对实例进行管理。
从实现上有两种方式,但本质是相同的,都是在管理一组对象。
为了讲述方便,先建立一组父子类,Subject是ConcreteSubject1和ConcreteSubject2的父类。
public class Subject
public class ConcreteSubject1 : Subject
public class ConcreteSubject2 : Subject
public class CSingleton
public class RegFactory
{
private Hashtable objReg;
public RegFactory()
{
objReg = new Hashtable();
}
public Subject GetSubject(string name)
{
Subject r = null;
try
{
r = (Subject)objReg[name];
}
catch
{
}
if(r == null)
{
try
{
Type t = Type.GetType(name);
ConstructorInfo ci = t.GetConstructor(System.Type.EmptyTypes);
r = (Subject)ci.Invoke(null);
objReg.Add(name, r);
}
catch
{
throw new SystemException("No this Class Type");
}
}
return r;
}
}
补注:说到这里,一定要花些篇幅讲讲反射工厂,这是.NET专有的发射技术。
注册工厂,就是建立一个小型“DB”,采用注册方式,对实例进行管理。
从实现上有两种方式,但本质是相同的,都是在管理一组对象。
为了讲述方便,先建立一组父子类,Subject是ConcreteSubject1和ConcreteSubject2的父类。
public class Subject
public class ConcreteSubject1 : Subject
public class ConcreteSubject2 : Subject
public class CSingleton
public class RegFactory
{
private Hashtable objReg;
public RegFactory()
{
objReg = new Hashtable();
}
public Subject GetSubject(string name)
{
Subject r = null;
try
{
r = (Subject)objReg[name];
}
catch
{
}
if(r == null)
{
try
{
Type t = Type.GetType(name);
ConstructorInfo ci = t.GetConstructor(System.Type.EmptyTypes);
r = (Subject)ci.Invoke(null);
objReg.Add(name, r);
}
catch
{
throw new SystemException("No this Class Type");
}
}
return r;
}
}
补注:说到这里,一定要花些篇幅讲讲反射工厂,这是.NET专有的发射技术。
相关文章推荐
- 设计模式--工厂模式 caffe_layer注册
- PHP——大话PHP设计模式——基本设计模式(工厂模式、单例模式、注册器模式)
- PHP设计模式 二 (单例 工厂 注册)
- php基础设计模式大全(注册树模式、工厂模式、单列模式)
- 设计模式三大基础模式之工厂模式,单例模式,注册树模式
- php基础设计模式 注册树模式、工厂模式、单列模式
- 慕课网----大话PHP设计模式 三(三种基本设计模式-工厂模式,单例模式,注册树模式)
- php基础设计模式大全(注册树模式、工厂模式、单列模式)
- PHP 设计模式 笔记与总结(6)基础设计模式:工厂模式、单例模式和注册树模式
- Java设计模式之工厂方法模式
- [java]设计模式之工厂设计模式
- 设计模式[2]-旧话重提之-各种工厂模式
- 设计模式(四)简单工厂模式
- 设计模式—抽象工厂
- 设计模式之工厂方法模式
- 【设计模式】——工厂方法FactoryMethod
- JAVA设计模式(一)----工厂模式
- 设计模式之简单工厂模式
- 【设计模式】工厂方法
- 【设计模式】一石三鸟——三个工厂