对象工厂在面向对象的程序设计中用的很广泛,构成了面向对象程序的基础,本文简单的介绍了对象工厂模式,另外实现了一个泛型的实现。
一、对象工厂是什么:
在面向对象的系统中,我们很容易写下如此的代码:
SomeClass *pClass = new SomeClass();
pClass->SomeFuntion();
但是DIP告诉我们要优先依赖于抽象,而不是具体,所以我们修改这样:
SomeBaseClass *pClass = new SomeClass ();
pClass->SomeFuntion();
因为这里我们直接创建了SomeClass对象,所以仍然是知道具体的子类的,为了解决这个矛盾,另外实现一个函数或者类来专门负责对象的创建,就像工厂一样,所以叫对象工厂。
二、对象工厂的实现:
在现实的系统中,类的数量不会太多,所以,用一个标识来对类进行唯一性标识,我们就可以创建出这个类的对象了。(COM中用的CLSID来进行标识,我们这里作为示例,因为我们是泛型的实现,所以对什么标识进行了泛化)
代码如下: