状态模式

定义

  • 当一个对象的内在状态改变时,允许改变其行为;
    状态:类似于wifi状态;
    行为:音响手机数据的传输
  • 这个对象看起来是改变了类
    不同的状态,调用相同的功能,最终的效果不一样;

应用场景

  • 一个对象的行为取决于他的状态,并且必须在运行时,根据状态改变它的行为
  • 程序代码中包含大量与对象状态有关的条件语句
    ps:状态模式将每一个条件分支放到一个独立的类中,这使得你可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化,这样通过多态来去除过多的、重要复杂的if-else等分支语句;

角色分析

  • 角色一:抽象状态:StateProtocol
  • 角色二:具体状态:ConcrateState
  • 角色三:状态管理器(上下文):Context

案例

  • 以电视遥控器为例,分为两种状态:打开和关闭
    在两种状态下,切换频道和音量
    demo
  • 我们在实际开发中,也可以在运用在登录功能里,分为登录状态和未登录状态;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 Allow an object to alter its behavior when its interna...
    Whyn阅读 460评论 0 0
  • 一、了解状态模式 1、概念 状态模式又称状态对象模式,它允许一个对象在其内部状态改变的时候改变其行为。属于对象行为...
    jxiang112阅读 270评论 0 0
  • 【学习难度:★★★☆☆,使用频率:★★★☆☆】直接出处:状态模式梳理和学习:https://github.com/...
    BruceOuyang阅读 1,224评论 0 2
  • 定义 当一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。又称状态对象模式,状态模式...
    贾里阅读 230评论 0 0
  • 今天我们来做一个糖果机吧,用户只需要投入25美分,就可以购买糖果了,具体的构造如下图所示: 每个圆圈都表示一种状态...
    西木柚子阅读 1,092评论 1 11