文章目录
- 前言
- 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();
    }
}




















