Android 开发中的状态模式
1. 什么是状态模式?
状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态发生改变时,改变其行为。换句话说,一个对象根据状态不同,表现出不同的行为。
简单类比:
- 假设手机有三种状态:锁屏、解锁、低电量。
在不同状态下,按下音量键的反应可能是:调节音量、无响应或提醒充电。
状态模式通过将状态封装为独立的类,使得状态切换变得简单且易于扩展。
2. 状态模式的核心组成部分
- Context(上下文类):持有当前状态,负责状态切换并委托操作给当前状态。
- State(抽象状态接口/类):定义所有状态的共同行为。
- ConcreteState(具体状态类):实现具体状态下的行为逻辑。
3. UML 类图
以下是状态模式的 UML 结构:
- Context 持有一个 State 的引用。
- 不同的 ConcreteState 实现了 State 的行为。
- 状态切换通过 Context 的方法实现。

4. 代码示例:手机状态切换
实现一个手机的状态切换系统,分别支持 锁屏状态、解锁状态 和 低电量状态。
// State: 定义状态接口
interface PhoneState {
void pressPowerButton();
}
// ConcreteState: 锁屏状态
class LockedState implements PhoneState {
private PhoneContext context;
public LockedState(PhoneContext context) {
this.context = context;
}
@Override
public void pressPowerButton() {
System.out.println("解锁手机");
context.setState(new UnlockedState(context));
}
}
// ConcreteState: 解锁状态
class UnlockedState implements PhoneState {
private PhoneContext context;
public UnlockedState(PhoneContext context) {
this.context = context;
}
@Override
public void pressPowerButton() {
System.out.println("锁屏手机");
context.setState(new LockedState(context));
}
}
// ConcreteState: 低电量状态
class LowBatteryState implements PhoneState {
private PhoneContext context;
public LowBatteryState(PhoneContext context) {
this.context = context;
}
@Override
public void pressPowerButton() {
System.out.println("低电量,功能受限");
}
}
// Context: 持有状态
class PhoneContext {
private PhoneState state;
public PhoneContext() {
this.state = new LockedState(this); // 初始状态
}
public void setState(PhoneState state) {
this.state = state;
}
public void pressPowerButton() {
state.pressPowerButton();
}
}
// 使用示例
public class StatePatternDemo {
public static void main(String[] args) {
PhoneContext phone = new PhoneContext();
// 锁屏状态 -> 解锁状态
phone.pressPowerButton();
// 解锁状态 -> 锁屏状态
phone.pressPowerButton();
// 切换到低电量状态
phone.setState(new LowBatteryState(phone));
// 低电量状态下按键
phone.pressPowerButton();
}
}
输出:
解锁手机
锁屏手机
低电量,功能受限
5. UML 演示简化
以下动画逻辑展示可以更直观:
- 手机初始处于“锁屏状态”,按钮按下后状态变为“解锁状态”,显示屏点亮。
- 再次按下按钮,状态变为“锁屏状态”,显示屏关闭。
- 切换为“低电量状态”,按下按钮显示“低电量警告”。
6. Android 中的实际应用
-
播放器的状态管理:
- 状态:播放、暂停、停止。
- 按钮行为:在不同状态下执行对应的播放或暂停逻辑。
-
Activity 生命周期管理:
- 状态:
onCreate、onStart、onResume等。 - 不同生命周期执行不同的逻辑处理。
- 状态:
-
网络状态管理:
- 状态:在线、离线、限速模式。
- 对应网络行为动态调整。
7. 总结与记忆技巧
状态模式的核心是 “将状态行为与对象分离”,方便扩展。
记忆口诀:
状态分离行为变,切换扩展很自然。
当前文章价值2.67元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章
分类:设计模式
标签:Android状态模式, 状态设计模式
评论已关闭!