设计模式之禅-里氏替换原则

来源:互联网 发布:淘宝页面布局怎么设置 编辑:程序博客网 时间:2024/05/18 20:13

设计模式之禅-里氏替换原则
一 简介
里氏替换原则的核心就是:父类存在的地方子类也能存在,但是子类存在的地方父类不一定能存在。
这个原则通常与依赖倒置原则一同使用,实现一种”面向接口编程,非面向实现编程“的思想。
二 代码介绍(C/C++):
1.创建一个抽象类枪支,提供射击方法接口。

class AbstractGun {public:    /*射击*/    virtual void shoot() = 0;};

2.继承抽象基类实现3个具体的枪支类别

/*手枪*/class HandGun : public AbstractGun {public:    void shoot() override {        cout << "HandGun Shoot..." << endl;    }};
/*步枪*/class RifleGun : public AbstractGun {public:    void shoot() override {        cout << "RifleGun Shoot..." << endl;    }};
/*机关枪*/class MachineGun : public AbstractGun {public:    void shoot() override {        cout << "MachineGun Shoot..." << endl;    }};

3.提供一个士兵类来操作枪支

class Soldier {private:    /*类的组合*/    AbstractGun* p_gun;public:    /*为这个士兵设置使用的枪支类型,使用的是基类的接口作为参数*/    void setGun(AbstractGun* gun) {        this->p_gun = gun;    }    /*士兵开始杀敌人*/    void killEnemy() {        cout << "Soldier start shoot..." << endl;        p_gun->shoot();    }};

**4.**main来测试

int main() {    Soldier* s = new Soldier;    s->setGun(new HandGun);//传递子类的实现    //s->setGun(new RifleGun);//传递子类的实现    //s->setGun(new MachineGun);//传递子类的实现    s->killEnemy();    return 0;}

5.测试结果
HandGun:
这里写图片描述

RifleGun:
这里写图片描述

MachineGun:
这里写图片描述

6.本次资料
https://yunpan.cn/cSe29jNSzEDcn 访问密码 b263

0 0