状态模式
来源:互联网 发布:随意定位软件 编辑:程序博客网 时间:2024/06/11 04:10
1类图
2定义:
允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类
3应用场景
3.1 一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为
3.2 代码中有大量与状态有关的语句。
4电视状态接口
public interface TvState { public void nextChannel(); public void prevChannel(); public void turnUp(); public void turnDown();}
5关机状态
public class PowerOffState implements TvState { @Override public void nextChannel() { // TODO Auto-generated method stub } @Override public void prevChannel() { // TODO Auto-generated method stub } @Override public void turnUp() { // TODO Auto-generated method stub } @Override public void turnDown() { // TODO Auto-generated method stub }}
6开机状态
public class PowerOnState implements TvState { @Override public void nextChannel() { // TODO Auto-generated method stub System.out.println("下一频道"); } @Override public void prevChannel() { // TODO Auto-generated method stub System.out.println("上一频道"); } @Override public void turnUp() { // TODO Auto-generated method stub System.out.println("调高音量"); } @Override public void turnDown() { // TODO Auto-generated method stub System.out.println("调低音量"); }}
7电源接口
public interface PowerController { public void powerOn(); public void powerOff();}
8遥控器类似于context
public class TvController implements PowerController { TvState mTvState; public void setmTvState(TvState mTvState) { this.mTvState = mTvState; } @Override public void powerOn() { // TODO Auto-generated method stub setmTvState(new PowerOnState()); System.out.println("开机"); } @Override public void powerOff() { // TODO Auto-generated method stub setmTvState(new PowerOffState()); System.out.println("关机"); } public void nextChannel(){ mTvState.nextChannel(); } public void prevChannel(){ mTvState.prevChannel(); } public void turnUp(){ mTvState.turnUp(); } public void turnDown(){ mTvState.turnDown(); }}
9测试
public class Client { public static void main(String[] args) { TvController tvController = new TvController(); tvController.powerOn(); tvController.nextChannel(); tvController.prevChannel(); tvController.turnUp(); tvController.powerOff(); tvController.turnDown(); }}
阅读全文
0 0
- 状态模式(状态变化)
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 基于CC26XX的SYS/BIOS系统增加"characteristic service"服务
- python中format()方法格式化字符串
- STM32使用BSRR和BRR寄存器快速操作GPIO端口
- mac os 安装memcache
- 1063. 计算谱半径(逻辑题)
- 状态模式
- 运用深度学习让无人驾驶卡车驶入了快车道:深入了解创业公司TuSimple如何使用MXNet
- JAVA关于UnsupportedOperationException异常
- (五) spring cloud云服务架构
- centos 安装gitlab
- SpringBoot 设置多数据源访问
- Wannafly模拟赛3 绝对半径2051(尺取)
- Rhyme/JavaStudyNote final关键字深入内存分析以及final的注意事项
- c++中的操作符重载