文章目录
- 前言
- java - 设计模式 - 状态模式
- 1. 概述
- 2. 作用
- 3. 示例
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
java - 设计模式 - 状态模式
1. 概述
状态模式是一种行为型设计模式,它允许一个对象在其内部状态发生改变时改变其行为。这使得对象看起来好像修改了它的类。状态模式通常包括以下角色:
-
Context(上下文):它维护一个对当前状态对象的引用,并将客户端的请求委派给当前状态对象来处理;
-
State(状态):状态是一个接口或抽象类,它定义了一个或多个与上下文相关的动作。具体状态类实现这些动作,每个具体状态类代表了上下文的一种状态;
2. 作用
用于在对象的内部状态发生改变时改变对象的行为。这可以帮助你实现多种功能的状态驱动系统。
3. 示例
定义状态接口:
public interface State {
void turnOn();
void turnOff();
}
状态类:
class OnState implements State{
@Override
public void turnOn() {
System.out.println("已启用,无需在次启用");
}
@Override
public void turnOff() {
System.out.println("禁用");
}
}
class OffState implements State{
@Override
public void turnOn() {
System.out.println("启用");
}
@Override
public void turnOff() {
System.out.println("已禁用,无需在此禁用");
}
}
上下文:
public class StateBulid {
private State currentState;
public StateBulid() {
// 初始状态为关闭
currentState = new OffState();
}
public void setState(State state) {
currentState = state;
}
public void turnOn() {
currentState.turnOn();
setState(new OnState());
}
public void turnOff() {
currentState.turnOff();
setState(new OffState());
}
}
测试:
package com.example.demo.designMode.state;
public class StateTest {
public static void main(String[] args) {
StateBulid bulb = new StateBulid();
bulb.turnOn();
bulb.turnOn();
bulb.turnOff();
bulb.turnOff();
}
}