状态模式-c++实现
2016-05-03 23:30
609 查看
// statepattern.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; class Person; class MainState { public: virtual void attack() = 0; virtual void stand() = 0; }; class Astate : public MainState { public: Astate(Person *pPerson) { m_pPerson = pPerson;}; public: void attack() { cout << "Astate attack" << endl; } void stand() { cout << "Astate stand" << endl; } private: Person *m_pPerson; }; class Bstate : public MainState { public: Bstate(Person *pPerson) { m_pPerson = pPerson;}; void attack() { cout << "Bstate attack" << endl; } void stand() { cout << "Bstate stand" << endl; } private: Person *m_pPerson; }; class Person { private: MainState *m_pMainState; Astate *m_pAstate; Bstate *m_pBstate; public: Person() { m_pAstate = new Astate(this); m_pBstate = new Bstate(this); m_pMainState = m_pAstate; } void enterAstate() { m_pMainState = m_pAstate; cout << "enter Astate" << endl; } void enterBstate() { m_pMainState = m_pBstate; cout << "enter Bstate" << endl; } public: void attack() { m_pMainState->attack(); } void stand() { m_pMainState->stand(); } }; int main() { Person *p = new Person(); p->enterBstate(); p->attack(); p->stand(); p->enterAstate(); p->attack(); p->stand(); p->enterBstate(); p->attack(); p->stand(); return 0; }
相关文章推荐
- 第五次程序设计作业 C++计算器雏形 调用文件输入输出
- Restore IP Addresses
- 用c++写一个简单的计算器程序
- c++primer第二遍阅读感悟(chap3)
- c++写的简单计算器
- 嵌入式开发为什么要学C语言
- C语言的内存对齐机制
- Cpp_src.vim
- C++基础实例-文件Io等(5)
- C/C++头文件一览
- 设计模式C++学习笔记之十一(c/c++面试笔试题)
- C++11中的POD
- PCL库文件配置那点事
- c语言简易计算器
- 设计模式(C++) -----单例模式
- Problem J: C语言实验——for循环打印图形(循环结构)
- leetcode 345 Reverse Vowels of a String C++
- C++常用头文件
- C++简单线程开启
- Problem G: C语言实验--算算男生女生的比例