zoukankan      html  css  js  c++  java
  • 设计模式之七:模板方法模式(Template Method)

    模板方法模式:
    定义了一个算法的基本操作骨架,并将算法的一些步骤延迟到子类中来实现。
    模板方法模式让子类在不更改算法结构的前提下能够又一次定义算法的一些步骤。

    Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm's structure.

    UML图:

    这里写图片描写叙述

    主要包含:

    1. AbstractClass:定义了一个子类须要又一次实现的算法的某些步骤primitiveOperation,实现了一个模板方法,这个模板方法调用定义于AbstractClass和又一次定义与子类中的某些函数。
    2. ConcreteClass:实现了primitiveOperation以完毕算法中某些特定的步骤。

    C++代码例如以下:

    #include <iostream>
    
    class AbstractClass
    {
            public:
                    void templateMethod()
                    {
                        std::cout<<"before primitiveOperation1"<<std::endl;
                        primitiveOperation1();
                        std::cout<<"after primitiveOperation1"<<std::endl;
                        std::cout<<"before primitiveOpreation2"<<std::endl;
                        primitiveOperation2();
                        std::cout<<"after primitiveOperation2"<<std::endl;
                    }
                    virtual void primitiveOperation1()=0;
                    virtual void primitiveOperation2()=0;
    
    };
    
    class ConcreteClass :public AbstractClass
    {
        public:
                void primitiveOperation1()
                {
                    std::cout<<"ConcreteClass primitiveOperation1"<<std::endl;
                }
                void primitiveOperation2()
                {
                    std::cout<<"ConcreteClass primitiveOperation2"<<std::endl;
                }
    
    };
    
    int main()
    {
        AbstractClass * cc=new ConcreteClass;
        cc->templateMethod();
        return 0;
    }
    

    运行输出:

    这里写图片描写叙述

    事实上这个设计模式经经常使用到。基本上用到继承和多态这两个性质的话都会和这个设计模式打交道。

  • 相关阅读:
    Java DES 测试
    HttpClient3.1 警告: Cookie rejected:
    WebService实现文件上传下载
    使用dom4j生成xml字符串,以及解析xml字符串
    Java 单例总结
    weblogic使用脚本部署
    Java比较两个日期的大小
    Ubuntu14.04 weblogic11g集群环境测试
    Gson 禁止特殊字符转码
    只用CSS做到完全居中
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5413201.html
Copyright © 2011-2022 走看看