TEMPALTE 模板(行为模式)

介绍

定义一个操作的算法骨架,而将一些步骤延迟到子类中。此模式可以使得不改变算法的结构,而改变一些特定的步骤。

参与者

AbstractClass 抽象类
ConcereteClass 具体实现
比如,我们将大象放到某个物体里。

实现代码

#include <iostream>

class PlaceElp {
public:
    void PlaceElpInObj()
    {
        OpenObj();
        PutElpInObj();
        CloseObj();
    }
    virtual void OpenObj() = 0;
    virtual void PutElpInObj() = 0;
    virtual void CloseObj() = 0;
};

class Fridge : public  PlaceElp{
public:
    void OpenObj()
    {
        std::cout<<"打开冰箱"<<std::endl;
    }
    void PutElpInObj()
    {
        std::cout<<"把大象放进去"<<std::endl;
    }
    void CloseObj()
    {
        std::cout<<"关上冰箱"<<std::endl;
    }
};

int main()
{
    PlaceElp *obj = new Fridge();
    obj->PlaceElpInObj();
    return 0;
}

输出

打开冰箱
把大象放进去
关上冰箱

特点

  • 代码复用
  • 钩子操作,提供了缺省的行为

参考

《设计模式,可复用面向对象软件设计的基础》

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容