您的位置:首页 > 其它

我也设计模式——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专有的发射技术。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: