Linux C++ 053-设计模式之模板方法模式

Linux C++ 053-设计模式之模板方法模式

本节关键字:Linux、C++、设计模式、模板方法模式
相关库函数:

概念

模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。在软件工程中,它是一种软件设计模式,和C++模板没有关连。

使用场景

模板方法模式多用在:

1、某些类别的算法中,实做了相同的方法,造成程式码的重复。

2、控制子类别必须遵守的一些事项。

代码示例

// 将不变的代码都移到父类中,将可变的方法用virture留到子类中重写
// 需要重写的方法都放在了protected关键字下
// 父类中无需重写的方法来调用需要重写的方法
// 客户端只需访问类中无需重写的方法

class Computer
{
public:
    void product() {
        installCPU();
        installRAM();
        installGraphicsCard();
    }
private:
    virtual void installCPU() = 0;
    virtual void installRAM() = 0;
    virtual void installGraphicsCard() = 0;
};
class ComputerA : public Computer
{
protected:
    void installCPU() override {
        cout << "ComputerA install Inter Core i5" << endl;
    }
    void installRAM() override {
        cout << "ComputerA install 2G Ram" << endl;
    }
    void installGraphicsCard() override {
        cout << "ComputerA install Gtx940 GraohicsCard" << endl;
    }
};
class ComputerB : public Computer
{
protected:
    void installCPU() override {
        cout << "ComputerB install Inter Core i7" << endl;
    }
    void installRAM() override {
        cout << "ComputerB install 4G Ram" << endl;
    }
    void installGraphicsCard() override {
        cout << "ComputerB install Gtx960 GraohicsCard" << endl;
    }
};
int main_Model()
{
    ComputerB* c1 = new ComputerB();
    c1->product();
    c1 = NULL;
    return 0;
}
/* 运行结果:
ComputerB install Inter Core i7
ComputerB install 4G Ram
ComputerB install Gtx960 GraphicsCard
*/

相关推荐

  1. Linux C++ 053-设计模式模板方法模式

    2024-07-18 02:10:03       23 阅读
  2. 设计模式模板方法

    2024-07-18 02:10:03       53 阅读
  3. 设计模式模板方法

    2024-07-18 02:10:03       41 阅读
  4. 设计模式模板方法模式

    2024-07-18 02:10:03       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 02:10:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 02:10:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 02:10:03       58 阅读
  4. Python语言-面向对象

    2024-07-18 02:10:03       69 阅读

热门阅读

  1. OpenGL-0-简要说明

    2024-07-18 02:10:03       22 阅读
  2. 入门c语言DAY4.1——scanf&printf详细介绍

    2024-07-18 02:10:03       24 阅读
  3. 【C#】Array和List

    2024-07-18 02:10:03       21 阅读
  4. qt设置窗口位置设置

    2024-07-18 02:10:03       22 阅读
  5. bs4取值技巧的详细介绍

    2024-07-18 02:10:03       22 阅读
  6. Llama - Prompting

    2024-07-18 02:10:03       21 阅读
  7. 【SASS/SCSS(二)】模块化语法

    2024-07-18 02:10:03       26 阅读
  8. HTML5应用的安全防护策略与实践

    2024-07-18 02:10:03       22 阅读
  9. 23种设计模式

    2024-07-18 02:10:03       20 阅读
  10. tomcat如何进行调优?

    2024-07-18 02:10:03       17 阅读
  11. C#调用非托管dll的两种方式

    2024-07-18 02:10:03       22 阅读