State Design Pattern 状态设计模式2

其实本设计模式可以实现一些像人工智能式的问答。

这个跟人回答问题差不多,根据不同的问题作出不同的回答,而且在不同的状态,也会作出不同的回答。

如果有大量的数据,那么就可以作出千变万化的问答效果来哦。

#include <stdio.h>

enum STATE
{
	HUNGARY, EAT, FULL
};

class State
{
	STATE myState;
public:
	State(STATE s = HUNGARY) : myState(s)
	{

	}

	void eat()
	{
		switch (myState)
		{
		case State_2::HUNGARY:
			puts("Good, I am hungary now. I would like something to eat.");
			myState = EAT;
			break;
		case State_2::EAT:
			puts("I am still eating. I am not finished, yet.");
			break;
		case State_2::FULL:
			puts("Not, Thanks. I am full now.");
			break;
		default:
			break;
		}
	}

	void hungary()
	{
		switch (myState)
		{
		case State_2::HUNGARY:
			puts("I am starving! I need to eat something!");
			break;
		case State_2::EAT:
			puts("I am still hungary, I want to eat more.");
			break;
		case State_2::FULL:
			puts("Now, I am feeling hungary again.");
			myState = HUNGARY;
			break;
		default:
			break;
		}
	}

	void full()
	{
		switch (myState)
		{
		case State_2::HUNGARY:
			puts("I am not full, I need to eat something first.");
			break;
		case State_2::EAT:
			puts("Great, I am full now. Thank you.");
			myState = FULL;
			break;
		case State_2::FULL:
			puts("Yeah, can not be more satisfied. I am full, and full again.");
			break;
		default:
			break;
		}
	}
};

int main()
{
	State Bill;

	puts("\nWhen Bill is in HUNGARY state:");
	puts("Are you hungary, Bill?");
	Bill.hungary();
	puts("Are you full, Bill?");
	Bill.full();
	puts("Would you like something to eat, Bill?");
	Bill.eat();	//Change state

	puts("\nWhen Bill is in EAT state:");
	puts("Would you like something to eat, Bill?");
	Bill.eat();
	puts("Are you hungary, Bill?");
	Bill.hungary();
	puts("Are you full, Bill?");
	Bill.full();	//Change state

	puts("\nWhen Bill is in FULL state:");
	puts("Are you full, Bill?");
	Bill.full();
	puts("Would you like something to eat, Bill?");
	Bill.eat();
	puts("Are you hungary, Bill?");
	Bill.hungary();	//Change state

	return 0;
}

看看运行效果:

State Design Pattern 状态设计模式2,布布扣,bubuko.com

时间: 2024-10-14 13:51:28

State Design Pattern 状态设计模式2的相关文章

State Design Pattern 状态设计模式

设置好内部状态,然后根据不同的函数作为行为模式,进行状态转换. 有点像Finite Automata算法,两者的思想是一样的. 会Finite Automata,那么这个设计模式就很容易了. #pragma once #include <stdlib.h> #include <math.h> #include <random> #include <time.h> enum STATES { FULLY_RENTED, WAITING, GOT_APPLICA

Proxy Design Pattern 代理设计模式

代理设计模式,这个模式很多用于服务器客户端之类的,上网也经常使用代理之类的,想起来感觉是很复杂的,不过这个设计模式本身是很简单的. 就是一个类调用另外一个类的函数,客户调用的是一个类,而实际的工作是由另外一个类做的. 体现这个设计模式的代码: #include <stdio.h> class RealObj { public: virtual void handleReq() = 0; }; class DoSomething : public RealObj { public: void h

Composite Design Pattern 组合设计模式

组合设计模式,就是可以把多个类组合在一个大类中,形成一个树形结构. #include <set> #include <iostream> #include <string> using namespace std; class Coporate { protected: string name; set<Coporate *> coporate; public: explicit Coporate(string n = "", strin

State模式(状态设计模式)

State??? State模式中,我们用类来表示状态.以类来表示状态后,我们就能通过切换类来方便地改变对象的状态.当需要增加新的状态时,如何修改代码这个问题也会很明确. 直接用状态代替硬编码 依赖于状态的处理,来执行具体的操作 理清职责 实现功能: ·有一个金库 ·金库与警报中心相连 ·金库里有警铃和正常通话用的电话·金库里有时钟,监视着现在的时间 ·白天的时间范围是9:00~16:59,晚上的时间范围是17:00~23:59和0:00~8:59 ·金库只能在白天使用 ·白天使用金库的话,会在

DP什么意思 design pattern 设计模式

DP  design pattern 大话设计模式  中的DP 是设计模式的意思 设计模式的书 ,最经典最原始的就是 GOF 的<设计模式>了. 设计模式的书基本上大多是以这 20 多个模式分开讲.含<大话设计模式> 学了 OOL 写的程序基本上是 OB 的. 只有慢慢掌握了 DP 才能写出真正的 OO 程序. 思想 -> 设计原则 -> DP -> OOD

State状态设计模式

1.状态模式:改变对象的行为 一个用来改变类的(状态的)对象. 2:问题:当你自己实现 State 模式的时候就会碰到很多细节的问题,你必须根据自己的需要选择合适的实现方法, 比如用到的状态(State)是否要暴露给调用的客户,以及如何使状态发生变化 用于改变状态的机制可能很简单也可能很复杂-比如状态机(State Machine) 3.代理(Proxy)设计模式实际上是状态设计模式的一个特例 4.类图以及UML(astah/jude)下载地址 : http://pan.baidu.com/s/

Design Pattern Memo 备忘录设计模式

本设计模式就是简单地记录当前状态,然后利用记录的数据恢复. 比如首先我们有一个类,类需要记录当前状态进行相关的工作的: class Memo; class Human { public: string state; Memo *makeMemo(); void restroDataFromMemo(Memo *m); void show() { cout<<"State: "<<state<<endl; } }; 这里面的state可以是任意定义的数

设计模式(Design pattern)概述

设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结, 使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性 设计框架 可复用面向对象软件系统一般划分为两大类:应用程序工具箱和框架(Framework) 我们平时开发的具体软件都是应用程序 而框架是构成一类特定软件可复用设计的一组相互协作的类 框架通常定义了应用体系的整体结构类和对象的关系等等设计参数,以便于具体应用实现者能集中精力于应用本身的特定细节. 框架主要记录软件应用中

Design Pattern 设计模式1 - Strategy 1

实现 : Defferent Heros attack Defferently. - 不同的英雄使用不用的招数 Strategy设计的思路: 基类A,更加小的基类B,新的继承类C: 1 从基类A中抽出一个更加小的基类B 2 利用这个更加小的基类B实现不同的效果 3 把这个更加小的基类B包含进基类A中去 4 新的继承类C只需要和基类A打交道,设计不同行为,不需要理会更加小的基类B #pragma once #ifndef _STRATEGY_HEROS_H #define _STRATEGY_HE