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