微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐