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

设计模式——状态模式

作者: 写一本2000000的书 | 来源:发表于2019-09-30 14:00 被阅读0次

状态模式(State Pattern) :允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。

状态模式.jpg
Context: 场景类,维护一个状态(State)
State:抽象状态类
ConcreteState: 具体状态类

示例:模拟一个人青年、中年、老年的不同状态

/**
 * 
 * @author apple
 *
 * 环境类
 *
 */
public class Context {
    private IState state;

    public void setState(IState state) {
        this.state = state;
    }
    
    public void request(String sampleParameter) {
        this.state.handle(sampleParameter);
    }
}
/**
 * @author apple
 * 
 * 状态类
 *
 */
public interface IState {
    /*
     * 状态对应的处理
     */
    public void handle(String sampleParameter);
}

public class ConcreteStateA implements IState {

    @Override
    public void handle(String sampleParameter) {
        // TODO Auto-generated method stub
        if (sampleParameter == "青年") {
            System.out.println("青年的状态:读书学习耍盆友");    
        }
    }
    
}
public class ConcreteStateB implements IState {

    @Override
    public void handle(String sampleParameter) {
        // TODO Auto-generated method stub
        if (sampleParameter == "中年") {
            System.out.println("中年的状态:加班加班加班"); 
        }
    }
    
}

public class Client {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //  一个类内部发生变化,变现不同状态
        //  一个人不同阶段,做不同的事  ,青年 上学 ,中年 上班, 老年: 打麻将
        
        Context context = new Context();
        
        // 青年时候
        ConcreteStateA a = new ConcreteStateA();
        context.setState(a);
        context.request("青年");
        // 中年时候
        ConcreteStateB b = new ConcreteStateB();
        context.setState(b);
        context.request("中年");
        // 老年时候
        ConcreteStateC c = new ConcreteStateC();
        context.setState(c);
        context.request("老年");
        
    }

}

应用场景:一个模型内部有多个不同状态

相关文章

  • 设计模式-状态模式

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

  • 设计模式——状态模式

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

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

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

  • 设计模式——状态模式

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

  • 设计模式--状态模式

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

  • 设计模式——状态模式

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

  • 设计模式《状态模式》

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

  • 设计模式——状态模式

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

  • 设计模式 - 状态模式

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

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

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

网友评论

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

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