/**
* 电视遥控器
*/
public interface TvState {
/**
* 音量调高
*/
void turnOn();
/**
* 音量调低
*/
void turnOff();
/**
* 下一个频道
*/
void nextChannel();
/**
* 上一个频道
*/
void preChannel();
}
/**
* 关机状态下的行为实现
* @author newtrekWang
* @email wangjiaxing20160101@gmail.com
* @time 2018/8/15 23:22
*/
public class PowerOffState implements TvState {
@Override
public void turnOn() {
// 没有实现即失灵
}
@Override
public void turnOff() {
// 没有实现即失灵
}
@Override
public void nextChannel() {
// 没有实现即失灵
}
@Override
public void preChannel() {
// 没有实现即失灵
}
}
/**
* 开机状态下的行为实现
* @author newtrekWang
* @email wangjiaxing20160101@gmail.com
* @time 2018/8/15 23:22
*/
public class PowerOnState implements TvState {
@Override
public void turnOn() {
System.out.println("音量调高");
}
@Override
public void turnOff() {
System.out.println("音量调低");
}
@Override
public void nextChannel() {
System.out.println("切换到了下一个频道");
}
@Override
public void preChannel() {
System.out.println("切换到了上一个频道");
}
}
/**
* 电视机遥控器类
* @author newtrekWang
* @email wangjiaxing20160101@gmail.com
* @time 2018/8/15 23:29
*/
public class TvController {
private TvState state;
public void powerOn(){
this.state = new PowerOnState();
System.out.println("已开机");
}
public void powerOff(){
this.state = new PowerOffState();
System.out.println("已关机");
}
public void turnOn() {
state.turnOn();
}
public void turnOff() {
state.turnOff();
}
public void nextChannel() {
state.nextChannel();
}
public void preChannel() {
state.preChannel();
}
}
参考:segmentfault.com/a/119000001…
状态模式和策略模式的区别:juejin.cn/post/684490…