状态模式

【1】什么是状态模式?

不同的状态,不同的行为。或者说,每个状态有着相应的行为。

【2】状态模式的代码示例:

代码示例:

复制代码
 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 class Work;
 6 class State;
 7 class ForenonnState;
 8 
 9 
10 class State
11 {
12 public:
13     virtual void writeProgram(Work*) = 0;
14 };
15 
16 class Work
17 {
18 public:
19     int hour;
20     State *current;
21     Work();
22     void writeProgram()
23     {
24         current->writeProgram(this);
25     }
26 };
27 
28 class EveningState : public State
29 {
30 public:
31     void writeProgram(Work *w)
32     {
33         cout << "当前时间: " << w->hour << "心情很好,在看《明朝那些事儿》,收获很大!" << endl;
34     }
35 };
36 
37 class AfternoonState : public State
38 {
39 public:
40     void writeProgram(Work *w)
41     {
42         if (w->hour < 19)
43         {
44             cout << "当前时间: " << w->hour << "下午午睡后,工作还是精神百倍!" << endl;
45         }
46         else
47         {
48             w->current = new EveningState();
49             w->writeProgram();
50         }
51     }
52 };
53 
54 class ForenonnState : public State
55 {
56 public:
57     void writeProgram(Work *w)
58     {
59         if (w->hour < 12)
60         {
61             cout << "当前时间: " << w->hour << "上午工作精神百倍!" << endl;
62         }
63         else
64         {
65             w->current = new AfternoonState();
66             w->writeProgram();
67         }
68     }
69 };
70 
71 Work::Work()
72 {
73     current = new ForenonnState();
74 }
75 
76 int main()
77 {
78     Work *w = new Work();
79     w->hour = 21;
80     w->writeProgram();
81     return 0;
82 }
83 //Reuslt:
84 //当前时间: 21心情很好,在看《明朝那些事儿》,收获很大!
View Code
复制代码

 

Good  Good  Study,  Day  Day  Up.

顺序  选择  循环  总结

posted @   kaizenly  阅读(363)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
打赏

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示