学习笔记:模板模式
模式简介
:属于行为型模式,抽象类公开执行它方法的模板。
为什么用
:对于一件事的步骤,子类有不同的细节,父类写好了总的方法,就可以让子类实现具体的细节。比如都是玩,但是玩的具体内容不一样。
怎么样用
:父类里写了抽象方法,总的方法,抽象方法由一个总的方法调用,子类实现了抽象方法,就可以调用具体方法。
注意事项
:总的方法要封装不变的,扩展可变的。
实际举例
:不同的角色加入游戏。
#include <iostream>
#include <vector>
using namespace std;
//生命
class Life {
private:
string id;
string name;
string hp;
string mp;
public:
virtual void init() {}
virtual void addMap() {}
void play() {
init();
addMap();
}
};
//人物
class Person :public Life {
public:
void init() {
cout << "人物数据初始化\n";
}
void addMap() {
cout << "人物加入战场\n";
}
};
//怪物
class Monster :public Life {
public:
void init() {
cout << "怪物数据初始化\n";
}
void addMap() {
cout << "怪物加入战场\n";
}
};
//管理员
class Administrator :public Life {
public:
void init() {
cout << "管理员数据初始化\n";
}
void addMap() {
cout << "管理员加入战场\n";
}
};
int main() {
Person* person = new Person();
person->play();
Monster* monster = new Monster();
monster->play();
Administrator* administrator = new Administrator();
administrator->play();
return 0;
}