设计模式之状态模式
来源:互联网 发布:淘宝奢侈品拍卖真假 编辑:程序博客网 时间:2024/05/22 14:08
用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。
public class A {// 持有一个State类型的对象实例private S s;public void setState(S s) {this.s = s;}public void request(String str) {// 转调state来处理s.main(str);}}public interface S {public void main(String str);}public class S1 implements S {@Overridepublic void main(String str) {System.out.println(str);}}public class S2 implements S {@Overridepublic void main(String str) {System.out.println(str);}}
跟策略模式是不是很像?它们的类图是一样的,但意图却完全不一样,策略模式是让用户指定更换的策略行为,而状态模式是状态在满足一定条件下的自动更换,用户无法指定状态,最多只能设置初始状态。
实际使用中去体会他们的不同。
概括下策略模式和状态模式的不同:
策略模式中对象改变时只改变部分方法,状态模式中对象改变时会改变所有方法。
阅读全文
0 0
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之--状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 设计模式之状态模式
- 【设计模式】之状态模式
- android pm命令用法
- jstl 条件标签
- Hbase服务启动以及shell命令使用遇到的问题
- SELEnium安装
- 给 tabBarItem 添加小红点
- 设计模式之状态模式
- spark系列
- php 文件读行赋值数组 效率对比 file feof
- 以中文为查询条件查询mysql数据库时有数据却查不到数据或者中文乱码的问题
- Spring for Dynamic Datasource
- kotlin基础语法
- Python外观模式
- MSTR
- 使用Spring的@Scheduled实现定时任务