《设计模式》笔记:状态模式
来源:互联网 发布:网络变压器加工 编辑:程序博客网 时间:2024/05/22 15:15
_________________________基本概念,copy from 百度百科______________________
状态模式(State Pattern)是设计模式的一种,属于行为模式。
定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。
意图:允许一个对象在其内部状态改变时改变它的行为
适用场景:
1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。
2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。
__________________________UML图_______________________________________
个人理解,两个关键点:
1)Context把任务委托给当前的ConcreteState;
2)state模式中的各种具体的state类中的operation方法在处理Context的请求时,还要设置好Context的后继state。逻辑判断被分割到一个个具体的类中,减少了相互间的耦合性。
另外,具体状态类多采用单件模式来实现。
__________________________实践________________________________________
《设计模式》一书中提高的TCP状态类的例子:
一个ConcreteState类,TCPlisten的单件模式实现
#include "Tcpstate.h"class TcpListen :public TcpState{public:static TcpState *Instance();virtual void send(TcpConnection*);private:static TcpState* _instance;};TcpState *TcpListen::_instance=0;void TcpListen::send(TcpConnection *t){printf("Server send SYN,receive SYN,ACK,etc\n");changeState(t,TcpEstablished::Instance());}TcpState *TcpListen::Instance(){printf("In TCPLISTEN state\n");if(TcpListen::_instance==0){_instance=new TcpListen;}return _instance;}
- 《设计模式》笔记:状态模式
- 设计模式笔记-状态模式
- 设计模式笔记--状态模式
- 设计模式笔记:状态模式
- 设计模式笔记:状态模式&策略模式
- 设计模式笔记之---状态模式
- 设计模式学习笔记-状态模式
- 设计模式学习笔记(状态模式)
- 设计模式学习笔记-状态模式
- 设计模式学习笔记-状态模式
- 设计模式学习笔记-状态模式
- 设计模式学习笔记-状态模式
- 设计模式学习笔记之状态模式
- 设计模式学习笔记--状态(State)模式
- 设计模式学习笔记-状态模式
- 设计模式学习笔记-状态模式
- 设计模式 笔记 状态模式 State
- 设计模式学习笔记-状态模式
- 在线查看图片
- C++ Primer 学习笔记十四 —— 重载操作符与转换
- Quartz cron表达式分析 (版本2.1.7)
- Java读取文件内容
- AppScan安全漏洞报告
- 《设计模式》笔记:状态模式
- 利用Hibernate从持久化类生成数据表
- 用 VC++建立 Windows 服务程序
- 挑战题:字符串转换成整数 “456”转换456
- 程序员学习能力提升三要素
- spring batch(二):核心部分(1):配置Spring batch
- 正确理解ThreadLocal
- 記錄執行一條一句需要多長時間:oracle dbms_utility.get_time函数
- Direct2D教程(三)简单几何图形