•   欢迎来到21NN网.
  •   请记住本站网址www.21nn.cn

C++设想形式浅识模板要领形式【C#.Net教程】,C++,设计模式,模板方法

摘要: 模板要领形式:定义一个操纵中的算法的骨架,而将一些步骤延晚到子类中。模板要领使得子类能够不转变一个算法的构造即可重定义该算法的某些特定步骤。实用的一个机遇:当我们要完成在某一细节条理一致的一个...
模板要领形式:定义一个操纵中的算法的骨架,而将一些步骤延晚到子类中。模板要领使得子类能够不转变一个算法的构造即可重定义该算法的某些特定步骤。

实用的一个机遇:当我们要完成在某一细节条理一致的一个历程或一系列步骤,但其一般步骤在更细致的条理上的完成能够不同时,我们一般斟酌用模板要领形式来处置惩罚。

模板要领的两个角色:

笼统类(AbstractClass): 给出顶级逻辑的框架

详细产品类(ConcreteClass):完成父类所定义时的一个或多个笼统要领。一个AbstractClass能够有多个ConcreteClass。

构造图:


测试用例:

[code]int main(){
    AbstractClass *pAbstractA = new ConcreteClassA;
    pAbstractA->TemplateMethod();  //Output: ConcreteA Operation1 ConcreteA Operation2

    AbstractClass *pAbstractB = new ConcreteClassB;
    pAbstractB->TemplateMethod();   //Output: ConcreteB Operation1 ConcreteB Operation2

    if(pAbstractA) delete pAbstractA;
    if(pAbstractB) delete pAbstractB;

    return 0;
}

模板要领完成:

[code]class AbstractClass{
public:
    void TemplateMethod(){  //一致的对外一个接口
        PrimitiveOperation1();
        PrimitiveOperation2();
    }
protected:
    virtual void PrimitiveOperation1(){  //原始操纵1
        std::cout << "Default Operation1\n";
    }
    virtual void PrimitiveOperation2(){  //原始操纵2
        std::cout << "Default Operation2\n";
    }
};

class ConcreteClassA: public AbstractClass{
protected:
    //重载要领1和2
    virtual void PrimitiveOperation1(){
        std::cout << "ConcreteA Operation1\n";
    }
    virtual void PrimitiveOperation2(){
        std::cout << "ConcreteA Operation2\n";
    }
};

class ConcreteClassB: public AbstractClass{
protected:
    virtual void PrimitiveOperation1(){
        std::cout << "ConcreteB Operation1\n";
    }
    virtual void PrimitiveOperation2(){
        std::cout << "ConcreteB Operation2\n";
    }
};

模板要领特性:

模板要领形式是通过把稳定行动搬移到父类,去除子类中的反复代码来表现它的上风。

模板要领形式就是供应了一个很好的代码复用平台。

以上就是C++设想形式浅识模板要领形式的内容,更多相关内容请关注ki4网(www.ki4.cn)!

分享到:

发表评论

评论列表

还没有评论,快来说点什么吧~

公众号二维码

微信公众号