ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

状态模式

2021-11-19 21:04:15  阅读:119  来源: 互联网

标签:状态 开心 void 模式 上班 State public


概念

人有开心和难过两种状态,当我开心的时候我就去上班,当我难过的时候我就不想上班,这种根据状态决定行为的方式,称为状态模式

实现方式

/**
 * 状态
 */
public class Demo {
    public static void main(String[] args) {
        Person person = new Person();
        // 改变状态为开心
        person.changeState(new Happy());
        person.behavior();
        // 改变状态为难过
        person.changeState(new Sad());
        person.behavior();
    }
}

// 状态,所有状态都要实现该接口
interface State {
    void doWork();
}

// 开心的状态
class Happy implements State {
    @Override
    public void doWork() {
        System.out.println("我今天开心,我去上班");
    }
}

// 难过的状态
class Sad implements State {
    @Override
    public void doWork() {
        System.out.println("我今天难过,不想上班,请假");
    }
}

// 人。 人的状态可能是开心,也可能是难过
class Person {
    private State state;

    public void changeState(State state) {
        this.state = state;
    }

    // 行为。根据状态决定作出什么行为
    public void behavior() {
        state.doWork();
    }
}

我今天开心,我去上班
我今天难过,不想上班,请假

状态和策略模式区别

  • 这两种模式在代码方面基本没什么区别,只是一种强调的是行为,一种强调的是状态
  • 策略模式强调的是一种行为。比如上班,那么策略模式强调的是上班的过程
  • 状态模式强调的是一种状态,根据状态可以触发哪种行为。比如我今天很开心,所以我去上班。强调的是开心,上班是由开心触发的一种行为

标签:状态,开心,void,模式,上班,State,public
来源: https://www.cnblogs.com/luchaoguan/p/15579107.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有