文章目录
0 设计模式
不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式
https://blog.csdn.net/qq_42874315/article/details/120006447
1 状态模式
在状态模式中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。
允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。
应用场景:打篮球的时候运动员可以有正常状态、不正常状态和超常状态。行为随状态改变而改变的场景。条件、分支语句的代替者。
2 实现思路
创建一个 State 接口和实现了 State 接口的实体状态类。
Context 是一个带有某个聚合着状态类的类。
3 需要的类
-
状态接口
方法的参数为下述的内容类
-
内容类
聚合状态接口,使用set对其进行赋值,使用get获取该对象
-
状态的实现类
实现接口方法,同时利用传入的内容类设置其聚合的State对象(this)
-
测试类
先调用接口的实现类中的方法(传入内容类)
再通过内容类内聚的State接口,去调用具体的State中对应的其他方法
4 具体实现
4.1 State(状态接口)
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/8/27 17:26
*/
public interface State {
void doAction(Context context);
}
4.2 Context(内容类,聚合State)
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/8/27 17:26
*/
public class Context {
private State state;
public Context() {
state = null;
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
}
4.3 State的实现类
4.3.1 StartState
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/8/27 17:27
*/
public class StartState implements State {
@Override
public void doAction(Context context) {
System.out.println("Player is in stop state");
context.setState(this);
}
public String toString(){
return "Stop State";
}
}
4.3.2 StopState
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/8/27 17:28
*/
public class StopState implements State {
@Override
public void doAction(Context context) {
System.out.println("Player is in start state");
context.setState(this);
}
public String toString(){
return "Start State";
}
}
4.4 测试类
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/8/27 17:29
*/
public class Test {
public static void main(String[] args) {
Context context = new Context();
StartState startState = new StartState();
startState.doAction(context);
System.out.println(context.getState().toString());
StopState stopState = new StopState();
stopState.doAction(context);
System.out.println(context.getState().toString());
}
}
5 思维导图
6 示例源码地址
https://github.com/ChenJiahao0205/design-pattern/tree/master
最后
我是通过马士兵老师的视频和菜鸟教程学习的,部分内容可能会有雷同
想阅读更多设计模式相关文章,欢迎到我的专栏【设计模式学习笔记】、【设计模式】中去查看
在23篇设计模式文章发布完成之后,我会公开完整的思维导图,点关注,不迷路
感谢大家看到这里,文章如有不足,欢迎大家指出;彦祖点个赞吧彦祖点个赞吧彦祖点个赞吧,欢迎关注程序员五条!