9、模板方法模式(TemplateMethod)

模板方法模式其實就是有一個帶有虛函數的基類,其實現了相關算法,其算法中包含了虛函數,因爲這些函數需要子類來實現所以在基類中以虛函數呈現,以保證算法的正常編譯。當實現了子類之後在使用時使用基類的指針指向子類,這樣調用接口也一致。
如汽車模型中有一下方法:
    void Run();
protected:
    virtual void Start() = 0;
    virtual void Stop() = 0;
    virtual void Alarm() = 0;
    virtual void EngineBoom() = 0;
    virtual bool IsAlarm();


方法    void Run();實現了算法,在此算法中需要使用Start等虛函數,這些函數因具體子類而不同。


在子類Car_a和Car_b中分別實現了各自對應基類中虛函數的這些函數實體。


main()
{


    CarModel *ph1 = new Car_a();
    ph1->Run();
    delete ph1;


    CarModel *ph2 = new Car_b();
    ph2->Run();
    delete ph2;


    Car_a *ph11 = new Car_a();  //此處指針不能使用CarModel類型,因SetAlarm函數是Car_a自身獨有的。
    ph11->SetAlarm(false);
    ph11->Run();
    delete ph11;


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章