C++代码:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<queue>
#include<Windows.h>
#include<list>
using namespace std;
class AbstractHero {
public :
virtual void showStaus() = 0;
int mHp;
int mAt;
};
class Hero : public AbstractHero {
public :
Hero() {
mHp = 0;
mAt = 0;
}
virtual void showStaus() {
cout << "血量: " <<mHp<< endl;
cout << "攻击力: " << mAt << endl;
}
};
class AbstractDecoration : public Hero {
public:
AbstractHero* hero;
public :
AbstractDecoration(AbstractHero* hero) {
this->hero = hero;
}
virtual void showStaus() { }
};
class Decoration :public AbstractDecoration{
public :
Decoration(AbstractHero* hero) :AbstractDecoration(hero) {}
void KuFu() {
this->mAt = this->hero->mAt + 30;
this->mHp = this->hero->mHp;
}
virtual void showStaus() {
KuFu();
cout<<"血量 :"<<mHp<<endl;
cout << "攻击力 :" << mAt << endl;
}
};
void test() {
AbstractHero* hero = new Hero();
cout<<"英雄初始状态:"<<endl;
hero->showStaus();
cout<<"========================="<<endl;
hero = new Decoration(hero);
hero->showStaus();
}
int main() {
test();
return 0;
}