C语言中的类厂(factory)
log4c中的类厂的实现也很有意思。
所为类厂就是可以用它来生产商品(product)。
但并不是一个类厂就可以生产所有的商品。
不同的商品需要不同的类厂,这就需要一个类能够按用户需要来产生类厂。
所以这本身就是一种C语言中的面向对象。
先看一下类厂们共同的操作
fac_new是生产一件商品,对应的还有delete的操作,print估计是调试用的。
有了这个共同的操作,就可以定义类厂结构体了
由上面的结构体,我们可以看出,一个类厂应该有一个名字(fac_name),
还有一组可指定的类厂操作(fac_ops),还有一个存储商品的hash表。
太精秒了,用户只需要负责new和delete操作,其它的工作都由这个抽象的类厂帮你来完成。
看看它都会做哪些操作:
这是新建一个类厂,而不是生成商品哦!
这是删除一个类厂,包括所有的商品。
这是获得类厂,依据名字。
这是一个商品,依据名字。
这是打印所有的类厂及其商品。
这是列出所有的类厂及其商品。
这个类厂抽象类如何使用呢?很简单第一步还是先根据自己的需要定义类厂操作:
第二步,构造结构体
小结
这个类厂抽象类是典型的C语言中的面向对象的一种应用,也比较实用,需要细细体会。