美文网首页
设计模式-状态模式

设计模式-状态模式

作者: liuzhimi | 来源:发表于2019-04-19 22:56 被阅读0次

介绍

状态模式中的行为是由状态来决定的,不同的状态下有不同的行为。
状态模式与策略模式结构几乎完全一样,但它们的目的、本质却完全不一样。状态模式的行为是平行的、不可替换的;策略模式的行为彼此独立、可相互替换。

使用场景
1.一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为。
2.包含与对象状态相关的大量条件、分支语句。

优点
1.封装了转换规则
2.将状态判断转换成了结构清晰的状态类族。

缺点
增加了系统类和对象的个数

UML类图

State.jpg

代码实现

State.java

public interface State {

    public void doSomething(Controller controller);
}

On.java

public class On implements State {

    @Override
    public void doSomething(Controller controller) {
        System.out.println("Current state is On");
        controller.setState(this);
    }

    public String toString() {
        return "Current state is On";
    }
}

Off.java

public class Off implements State {

    @Override
    public void doSomething(Controller controller) {
        System.out.println("Current state is Off");
        controller.setState(this);
    }

    public String toString() {
        return "Current state is Off";
    }
}

Controller.java

public class Controller {

    private State state;
    
    public Controller() {
        state = null;
    }
    
    public State getState() {
        return state;
    }
    
    public void setState(State state) {
        this.state = state;
    }
}

Main.java

public class Main {

    public static void main(String[] args) {
        Controller controller = new Controller();
        
        On on = new On();
        on.doSomething(controller);
        System.out.println(controller.getState().toString());
        
        Off off = new Off();
        off.doSomething(controller);
        System.out.println(controller.getState().toString());
    }
}

输出:

Current state is On
Current state is On
Current state is Off
Current state is Off

相关文章

  • 设计模式-状态模式

    设计模式-状态模式 设计模式 状态模式的关键是区分事物内部的状态

  • 设计模式——状态模式

    设计模式——状态模式 在状态模式中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 优点: 减少...

  • 设计模式-状态设计模式

    1.定义 对于某个操作,由于其状态的不同,表现出的行为会不同(如遥控器进行音量增加的操作,在电视是开机状态下是可以...

  • 设计模式——状态模式

    前言 设计模式是指导一个程序猿以更好的姿态处理一些问题,而不再像刚学编程的我们,只会使用if-else分支语句,或...

  • 设计模式--状态模式

    基本常识:策略模式与状态模式是双胞胎,在出生时才分开。 假设公司有个糖果机,1当糖果机由糖果,投入25分钱,转动曲...

  • 设计模式——状态模式

    在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的:状态模式,又称状态对象模式(Patte...

  • 设计模式《状态模式》

    引言   上一节我们说了策略模式。这一节我们讲讲策略模式的双胞胎弟弟:状态模式,这个模式大家可能不常见,也不常用,...

  • 设计模式——状态模式

    定义 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行...

  • 设计模式 - 状态模式

    模式定义 允许一个对象在其内部状态发生改变时改变它的行为。对象看起来似乎修改了它的类。 状态模式(State Pa...

  • 设计模式 ——— 状态模式

    STATE(状态) ———— 对象行为型模式 意图 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改...

网友评论

      本文标题:设计模式-状态模式

      本文链接:https://www.haomeiwen.com/subject/yyqhgqtx.html