Java设计模式之状态模式
来源:互联网 发布:nginx body filter 编辑:程序博客网 时间:2024/04/30 12:34
一、定义
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
二、角色
1 上下文环境(Context):它定义了客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete State对象来处理。
2 抽象状态(State):定义一个接口以封装使用上下文环境的的一个特定状态相关的行为。
3 具体状态(Concrete State):实现抽象状态定义的接口。
三、以电视机开关控制为例,写一个demo
1、抽象状态
package com.example.state;/** * 抽象状态类 * @author zeng * */public interface TVState { //开机 public void turnOn(); //关机 public void turnOff(); //下一个频道 public void nextChanel(); //上一个频道 public void preChanel();}
2.具体状态1
package com.example.state;public class PowerOn implements TVState { @Override public void turnOn() { System.out.println("开机"); } @Override public void turnOff() { System.out.println("关机"); } @Override public void nextChanel() { System.out.println("下一个频道"); } @Override public void preChanel() { System.out.println("上一个频道"); }}
3、具体状态2
package com.example.state;public class PowerOff implements TVState { @Override public void turnOn() { System.out.println("开机"); } @Override public void turnOff() { System.out.println("关机"); } @Override public void nextChanel() { System.out.println("请先开机"); } @Override public void preChanel() { System.out.println("请先开机"); }}
4、上下文环境,在此处是一个状态控制的管理器
package com.example.state;public class TVControl { private TVState tvState; private TVState turnOn,turnOff; public TVControl() { turnOn = new PowerOn(); turnOff = new PowerOff(); } public void turnOn() { tvState = turnOn; tvState.turnOn(); } public void turnOff() { tvState = turnOff; tvState.turnOff(); } public void nextChanel() { tvState.nextChanel(); } public void preChanel() { tvState.preChanel(); }}
5、客户类
package com.example.state;public class Client { public static void main(String[] args) { TVControl tvControl = new TVControl(); tvControl.turnOn(); tvControl.turnOff(); tvControl.nextChanel(); tvControl.turnOn(); tvControl.preChanel(); }}
打印结果
开机关机请先开机开机上一个频道
0 0
- java设计模式之状态设计模式
- 深入浅出Java设计模式之状态模式
- Java设计模式之State(状态模式)
- java设计模式之状态 模式State
- java设计模式之状态模式
- Java 设计模式之状态模式
- java与设计模式之状态模式
- Java设计模式泛型化之状态模式
- Java设计模式之状态模式
- Java设计模式之状态模式
- java 设计模式之状态模式
- 设计模式之状态模式 --- Java
- Java设计模式之状态模式
- 《Java设计模式》之状态模式
- JAVA设计模式之状态模式
- Java设计模式之状态模式
- java设计模式之状态模式
- Java设计模式之状态模式
- android获取周围基站信息
- 对象反序列化时,如果父类未实现序列化接口,则反序列出的对象会再次调用父类的构造函数来完成属于父类那部分内容的初始化
- 第六天-网页的head制作——明天继续写下面的
- bash,awk分离出文件夹目录下最后的文件
- 机试算法题(1)--排序算法
- Java设计模式之状态模式
- 一个BOM头引发的血案!!!
- springmvc之文件上传MultipartResolver
- 【LIS变形】 zoj 2319 Beautiful People
- Apriori算法的C++实现
- L1-029. 是不是太胖了
- 重构的那些事儿
- 位域unsigned char a:4
- Week7——图书管理系统