让基类静态函数实现工厂类功能

工厂模式的话一般多写个工厂类,客户端代码多引用一个工厂类。

如果用基类的静态函数实现这个工厂类的话,工厂类就不必要了。

比如A是基类,B,C是它的子类。可以这样写:

in A.H:
class A {
    static A* factoryMethod(int category);
};

in A.C:

A* A::factoryMethod(int category) {
    if(category == 1) {
        return new B();
    } else {
        return new C();
    }
}

这样客户端只要调用A::factoryMethod(...)就能申请不同的子类了。

posted on 2013-11-29 15:08  chen8840  阅读(221)  评论(0)    收藏  举报