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

前端之家收集整理的这篇文章主要介绍了设计模式之禅-里氏替换原则前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

设计模式之禅-里氏替换原则
一 简介
里氏替换原则的核心就是:父类存在的地方子类也能存在,但是子类存在的地方父类不一定能存在。
这个原则通常与依赖倒置原则一同使用,实现一种”面向接口编程,非面向实现编程“的思想。
代码介绍(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

原文链接:https://www.f2er.com/javaschema/283873.html

猜你在找的设计模式相关文章