让基类静态函数实现工厂类功能
工厂模式的话一般多写个工厂类,客户端代码多引用一个工厂类。
如果用基类的静态函数实现这个工厂类的话,工厂类就不必要了。
比如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(...)就能申请不同的子类了。
浙公网安备 33010602011771号