状态模式(State Pattern)

原创 2016年08月30日 16:18:01

状态模式(State Pattern)

flyfish

#include "stdafx.h"
#include <iostream>


class role;
class employee
{
public:
    virtual void output(role *role_ptr) = 0;

};

class engineer : public employee
{

public:
    virtual void output(role *role_ptr)
    {
        std::cout << "engineer" << std::endl;
    }
};

class salesman : public employee
{
public:
    virtual void output(role *role_ptr)
    {
        std::cout << "salesman" << std::endl;
    }

};
class manager : public employee
{

public:
    virtual void output(role *role_ptr)
    {
        std::cout << "manager" << std::endl;
    }
};
class role
{
private:
    employee* employee_ptr_;
public:
    role(employee *employee_ptr) : employee_ptr_(employee_ptr){}

    void output()
    {

        if (employee_ptr_)
        {
            employee_ptr_->output(this);

        }
    }

    void change_role(employee *employee_ptr)
    {
        employee_ptr_ = employee_ptr;
    }
};

int _tmain(int argc, _TCHAR* argv[])
{

    employee *a = new engineer();
    employee *b = new salesman();
    employee *c = new manager();

    role *r = new role(a);

    r->output();
    r->change_role(b);
    r->output();
    r->change_role(c);
    r->output();

    delete r;
    delete a;
    delete b;
    delete c;

    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

设计模式之状态模式(State Pattern)

  • 2012年02月29日 21:24
  • 38KB
  • 下载

State Pattern状态模式(三)

状态模式允许对象在内部状态改变时,改变它的行为。P410类图 #include using std::cout; using std::endl; //***************...
  • yaked
  • yaked
  • 2015年07月02日 20:43
  • 357

状态模式在领域驱动设计中的使用(Using the State pattern in a Domain Driven Design)

领域驱动设计是软件开发的一种方式,问题复杂的地方通过将具体实现和一个不断改进的核心业务概念的模型连接解决。这个概念是Eric Evans提出的,http://www.domaindrivendesig...

状态模式(State Pattern)

State模式的定义: 不同的状态,不同的行为;或者说,每个状态有着相应的行为. 何时使用? State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else ...

状态模式【State Pattern】

现在城市发展很快,百万级人口的城市一堆一堆的,那其中有两个东西的发明在城市的发展中起到非常重要的作用:一个是汽车,一个呢是...,猜猜看,是什么?是电梯!汽车让城市可以横向扩展,电梯让城市可以纵向延伸...

状态模式【State Pattern】

现在城市发展很快,百万级人口的城市一堆一堆的,那其中有两个东西的发明在城市的发展中起到非常重要的作用:一个是汽车,一个呢是...,猜猜看,是什么?是电梯!汽车让城市可以横向扩展,电梯让城市可以纵向延伸...

使用状态模式(state pattern)替代if else

http://www.blogjava.net/xzclog/archive/2006/10/16/75399.html

设计模式-状态模式(state pattern)

名称: 状态模式 说说: 动机: 适用性: 参与者: 结果:允许对象在内部状态改变时,改变自身的行为 类图: 说明:把状态改变的权力交给状态对象(本该属于context 的) ...
  • itol925
  • itol925
  • 2015年03月27日 18:28
  • 291

4.10 《硬啃设计模式》 第27章 是攻击还是逃走?- 状态模式(State Pattern)

游戏有以下规则:1.玩家距离敌人比较远时,敌人会看不见玩家,按既定路线巡逻。2.玩家距离敌人比较近时,敌人会发现玩家并进行攻击。3.当敌人被杀得差不多,只剩下一两个时,敌人会逃走。4.敌人可能会隐藏起...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:状态模式(State Pattern)
举报原因:
原因补充:

(最多只允许输入30个字)