2023-02-22
原文作者:键盘林 原文地址:https://blog.csdn.net/qq_37909508/category_8976362.html

状态模式

定义:允许一个对象在其内部状态改变时,改变它的行为

类型:行为型

适用场景:

一个对象存在多个状态(不同状态下行为不同),且状态可相互转换

优点:

将不同的状态隔离

把各种状态的转换逻辑,分布到State的子类中,减少相互间依赖

增加新的状态非常简单

缺点:

状态多的业务场景导致类数目增加,系统边复杂

相关设计模式:

状态模式和享元模式

Coding:

创建CourseVideoState类

202302222111327681.png

创建CourseVideoContext类

202302222111342922.png

它的set方法比较重要的

202302222111359413.png

202302222111380444.png

创建PlayState类

202302222111399545.png

202302222111420806.png

同理:

202302222111433137.png

创建SpeedState类,内容和上面相同,除了下面两个方法

202302222111449728.png

创建PauseState类,同理

202302222111462999.png

创建StopState类,注意下面三个方法。

2023022221114806310.png

当前UML类图

2023022221114962911.png

创建Test类

2023022221115123112.png

运行

2023022221115329713.png

JSF中的应用:

引入jar包

2023022221115435614.png

类Lifecycle

2023022221115540615.png

阅读全文