class TimeKeeper{
public:
TimeKeeper();
~TimeKeeper();
...
};
class AtomicClock:public TimeKeeper{...};//原子钟
class WaterClock:public TimeKeeper{...};//水钟
class WirstWatch:public TimeKeeper{...};//腕表
Factory函数会“返回”一个base class指针,指向新生置之derived class 对象“
TimeKeeper* getTimeKeeper();//返回一个指针,指向一个
为了遵循factory函数的规矩,被getTimerKeeper()返回的对象必须位于heap。因此为了避免内存泄露和其他资源,将factory函数返回的每一个对象适当地delete掉很重要
class TimeKeep{
public:
TimeKeeper();
virtual ~TimeKeeper();
...
}
TimeKeeper *ptk =getTimeKeeper();
...
delete ptk;