• 模板方法模式


    模板方法模式

      模板方法模式是一种基于继承的代码复用技术.定义方法操作的骨架,把一些具体实现延伸到子类中去,使用得具体实现不会影响到骨架的行为步骤。

      模板方法模式是最简单的设计模式,直接上代码。

      参考http://www.cnblogs.com/jiese/p/3180477.html

     1 #include "stdafx.h"
     2 #include<iostream>
     3 #include <vector>
     4 #include <string>
     5 using namespace std;
     6 
     7 
     8 //抽象模板,并定义了一个模板方法。
     9 class AbstractClass
    10 {
    11 protected:
    12     AbstractClass(){}
    13 public:
    14   //具体的模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,它们都推迟到子类中实现
    15   void TemplateMethod()
    16   {
    17     this->PrimitiveOperation1();
    18     this->PrimitiveOperation2();
    19   }
    20   //一些抽象行为,放到子类中去实现
    21   virtual void PrimitiveOperation1()=0;
    22   virtual void PrimitiveOperation2()=0;
    23 
    24 };
    25 
    26 //实现基类所定义的抽象方法
    27 class ConcreteClassA : public AbstractClass
    28 {
    29 public:
    30   //实现基类定义的抽象行为
    31   virtual void PrimitiveOperation1()
    32   {
    33     cout<<"ConcreteClassA::PrimitiveOperation1"<<endl;
    34   }
    35   virtual void PrimitiveOperation2()
    36   {
    37     cout<<"ConcreteClassA::PrimitiveOperation2"<<endl;
    38   }
    39 private:
    40 };
    41 
    42 //实现基类所定义的抽象方法
    43 class ConcreteClassB : public AbstractClass
    44 {
    45 public:
    46   //实现基类定义的抽象行为
    47   virtual void PrimitiveOperation1()
    48   {
    49     cout<<"ConcreteClassB::PrimitiveOperation1"<<endl;
    50   }
    51   virtual void PrimitiveOperation2()
    52   {
    53     cout<<"ConcreteClassB::PrimitiveOperation2"<<endl;
    54   }
    55 };
    56 
    57 int main()
    58 {
    59   //ConcreteClassA与ConcreteClassB可相互替换
    60   AbstractClass* pAbstract = new ConcreteClassA();
    61   pAbstract->TemplateMethod();
    62 
    63   pAbstract = new ConcreteClassB();
    64   pAbstract->TemplateMethod();
    65 
    66   system("pause");
    67   return 0;
    68 }
  • 相关阅读:
    NoSQL 数据库中的 CAP 理论
    JVM 相关概念
    Servlet 生命周期
    RabbitMQ
    消息队列概述
    05.类加载器深入解析及重要特性剖析
    LINUX笔记3(用户管理)
    LINUX笔记2(创建和编辑文本)
    修改httpd端口后,服务不能启动。
    LINUX笔记1(命令行和目录结构)
  • 原文地址:https://www.cnblogs.com/SnailProgramer/p/4283325.html
Copyright © 2020-2023  润新知