基类存在的意义

在C++这种面向对象的语言中,涉及到框架什么的大型项目的时候,基类很多时候就是一个接口预先定义的抽象模型概念。

一.比如说我想把100个UI页面设计为100个状态机的模型,关于每个状态机都需要有的功能为:      1.进入状态机函数start(); 2. 退出状态机函数finish(); 3.状态机的单例函数getInstance();

二.如果用面向对象的思路去写,100个状态应该有100个Cpp文件,每个文件代表一个状态,那么问题来了,这100个状态的CPP文件,可能某10个状态我可以把进入函数写为init(); 另外10个我可以写为entry(); 剩下的我写为start() ;这样有没有问题?没问题,但是不便于代码的维护以及扩展。于是基类的作用就体现出来了,100个状态机都需要使用的功能函数就是上述的三个点。。那我把这三个函数写在基类。让每个状态机去继承这个基类。那么每个页面的状态机的类就只需要写自己特定的功能就可以了。不用去定义一些五花八门都需要用到的接口模型。。而这个基类的函数,需要定义为虚函数(这样子类可以实现或不实现这个函数)。也可定义为纯虚函数(这样子类必须实现这个函数。)

三.体现到代码,大概就是这样。

父类:(每个页面都需要用到的功能函数类型)(注释部分为纯虚函数)

class BaseFunc {
    static BaseFunc* getInstance() {
        static BaseFunc* instance = new BaseFunc();
        return instance;
    }

    virtual void start();
    //virtual void start() = 0;
    virtual void finish();
    // virtual void finish() = 0;
}

子类:(也就是具体的状态机的一个状态:比如设为statefirst状态)

class statefirst : public BaseFunc {
    virtual void start() {
        // Todo:打开这个页面
        printf("open this page\r\n");
    }
    virtual void finish() {
        // 关闭这个页面
        printf("close this page\r\n");
    }
}

这只是关于平时写代码比较实用小技巧的体会,可用于平时写代码过程中。。

おすすめ

転載: blog.csdn.net/m0_37844072/article/details/120474214