鱼儿慢慢游~~

导航

 

模板方法模式:定义操作中的算法的骨架,而将一些具体的步骤延迟到子类中去。

        模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。

结构图:

 

AbstractClass 是一个抽象类,定义并实现了一个模板方法,该方法一般给出顶级的逻辑骨架,而具体的逻辑组成则在相应的抽象

操作中。推迟到子类,完成不同的实现。

模板方法的特点:

1. 将不变的行为移至父类中,去除子类的重复代码。

2. 当遇到一系列步骤构成的过程需要执行时,这些步骤从最高层次上来看都是相同的,但是有些步骤的实现可能不同,这时可以考虑使用模板方法模式。

 

例子:

假设在做蛋炒饭时, 我们都是先炒蛋,在炒饭。不对,应该是先放油~

class MakeEggRice
{
public:
    void showEggRice();
    virtaul void addOil();   
    virtual void fireEgg();
    virtual void fireRice();      
};

class lishifuEggRice
{
public:
     virtual void addOil()
     {
        cout << "很多油" << endl;
     }
     virtual void fireEgg()
{
    cout << "fire 2 eggs" << endl;
}
......
}

 

posted on 2016-06-23 12:01  miss_UU  阅读(142)  评论(0编辑  收藏  举报