状态模式
对于刚刚学完C和C++语法的同学来说,下一步就是学习设计模式和数据结构与算法了,这个技术大佬,后面才能有高级的操作,看高阶的书,我的博客这个两个模块都有记录,想了解的可以看下,分为前编和新编,新编是最近出的。这些代码都是实测可执行的,且去掉了繁琐的部分,只保留思想,如设计模式,这要能体现思想就好,简单和简洁才更容易入门,当你学会了这个思想,那么无论什么样的复杂度随你在工作中添加。
新编系列很多根据<<射雕英雄传>><<神雕侠侣>>等武侠小说,<<西游记>><<龙珠>>等动漫,把师徒关系,门派分类,功夫继承等,对应成类之间的关系,继承来说明。
场景介绍:神龙被召唤出来,弗利沙对神龙说:“让我获得永久的生命” 神龙说:“请说娜美克语言!”
肯尼(大长老身边的孩子)说:“让除悟空和弗利沙之外,所有的人转移到地球上” !@#$%^&*()_+Duang~~~~~
下一篇:令狐冲独孤九剑篇–策略模式
上一篇:孙猴子装饰七十二变篇–装饰器模式C++实现
Exe : State.o
g++ -o Exe State.o
main.o : State.cpp
g++ -g -c State.cpp
clean :
rm State
#include <iostream>
#include <string>
using namespace std;
enum Type
{
NO_Namec,
Namec
};
class Character;
class Kenny;
class Dragon_Ball
{
public:
int language;
Character* p_Character = NULL;
void set_longuage(Type type, Character* p_Character);
};
void Dragon_Ball::set_longuage(Type type, Character* p_Character)
{
language = type;
this->p_Character = p_Character;
}
class Character
{
public:
virtual void call_to_Dragon(Dragon_Ball* p_Dragon_Ball) = 0;
};
class Kenny : public Character
{
public:
void call_to_Dragon(Dragon_Ball* p_Dragon_Ball);
};
void Kenny::call_to_Dragon(Dragon_Ball* p_Dragon_Ball)
{
cout << "Your hope !!!" << endl;
}
class Freeza : public Character
{
public:
void call_to_Dragon(Dragon_Ball* p_Dragon_Ball);
};
void Freeza::call_to_Dragon(Dragon_Ball* p_Dragon_Ball)
{
if(p_Dragon_Ball->language != Type::Namec)
{
cout << "Dragon : 'Say Namec' !" << endl;
p_Dragon_Ball->set_longuage(Type::Namec, new Kenny);
p_Dragon_Ball->p_Character->call_to_Dragon(p_Dragon_Ball);
}
else
{
cout << "Your hope !!!" << endl;
}
}
int main(void)
{
Dragon_Ball* p_Dragon_Ball = new Dragon_Ball;
//弗利沙许愿
Freeza* p_Freeza = new Freeza;
p_Dragon_Ball->set_longuage(Type::NO_Namec, p_Freeza);
p_Dragon_Ball->p_Character->call_to_Dragon(p_Dragon_Ball);
delete p_Freeza;
delete p_Dragon_Ball;
return 0;
}
![](https://img-blog.csdnimg.cn/32ebb60e13f9449496052c247d2ccf65.png)
![](https://img-blog.csdnimg.cn/bfd8a35f631f44059d8d1d228a22d54b.jpg)
![](https://img-blog.csdnimg.cn/1b3e3fc19f5f4837a6514769eabf4e10.png)