java状态机设计模式_Java设计模式之状态模式详解
(本文由言念小文原创,转载请注明出处)
在实际工作中经常遇到某个对象,处于不同的状态有不同行为逻辑、且状态之间可以相互迁移的业务场景,特别是在开发通信协议栈类软件中尤为多见。《设计模式之禅》这本书中对状态模式有着非常详尽的讲解(目前为止我认为讲解得最好的书),但总觉得自己没能够理解透彻、灵活运用。直到今年完成了一个通信协议软件的开发,重新研究了“状态机”,然后回过头来理解当初学习的状态模式,豁然开朗。因此,本文先从状态机开始讲解,然后结合状态机详细阐述状态模式的两种实现方式,最后给出状态模式的优缺点及其使用场景。
一 案例描述
按照老风格,本文先描述一个场景案例,然后围绕案例来展开后文。相信每个人都用过手机的应用商城,通常在应用商城中会将可以安装的app以列表(listview)的形式呈现,一个应用占据列表的一个子项(item),如下图1所示:
图1
我们将注意力聚焦到item的按钮上:
a当检测到可安装的app,按钮显示“安装”;
b点击按钮,软件会去下载app安装包,这时按钮更新视图,显示“正在下载”(即安装进度);
c下载完成后,软件自动安装app,按钮显示“正在安装”;
d安装完成后,按钮显示“打开”,这时点击按钮将打开对应的app。<
java状态机设计模式_Java设计模式之状态模式详解相关推荐
- 设计模式——状态模式详解
0. 前言 写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦 ...
- 设计模式(四)——原型模式详解
设计模式(四)--原型模式详解 定义 结构 实现 案例 浅克隆 深克隆 定义 原型模式就是用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的对象. 结构 原型模式包含以下角色: ...
- 设计模式(五)——建造者模式详解
设计模式(五)--建造者模式详解 概述 结构 代码案例 优缺点 使用场景 模式扩展 创建者模式对比 工厂方法模式和建造者模式 抽象工厂模式和建造者模式 概述 建造者模式就是说将一个复杂对象的构建和表示 ...
- (二十一)状态模式详解(DOTA版) - 转
作者:zuoxiaolong8810(左潇龙),转载请注明出处. 本次LZ给各位介绍状态模式,之前在写设计模式的时候,引入了一些小故事,二十章职责连模式是故事版的最后一篇,之后还剩余四个设计模式,LZ ...
- 从java多态到策略模式_设计模式中的多态——策略模式详解
2. 策略模式详解 2.1 策略模式定义 策略模式定义了一系列算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户端而独立的变化. 可以使用多态进行类比来理解策略模 ...
- android 状态模式,Android编程设计模式之状态模式详解
本文实例讲述了Android编程设计模式之状态模式.分享给大家供大家参考,具体如下: 一.介绍 状态模式中的行为是由状态来决定的,不同的状态下有不同的行为.状态模式和策略模式的结构几乎完全一样,但它们 ...
- 设计模式之状态模式详解(State Pattern)
在软件开发过程中,应用程序中的有些对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态.当有状态的对象与外部事件产生互动时,其内部 ...
- 设计模式之状态模式详解
1 概述 [例]通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态.每一种状态改变,都有可能要根据其他状态来更新处理.例如,如果电梯门现在处于运行时状态,就不能进行开门操作 ...
- 【设计模式】之抽象工厂模式详解与应用(三)
开心一刻 [问:"怎么样才能给足男人面子"? 神回复:"露出腿上的淤青啊".] 课程介绍 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工 ...
最新文章
- NIO中的SelectionKey
- hourglass论文_DSSD(1)_论文_arxiv2017
- linux 常用命令02--文件属性 以及软硬链接
- oracle10g rac升级到10.2.0.5
- STL中list的重写
- jQuery插件开发代码
- 学习笔记——模板方法模式
- poidoc转换成html乱码,JAVA 利用POI实现DOC转HTML的方法及BUG修改
- Django | ORM choices参数详解
- batch文件常用命令
- FlashDB数据库+Norflash移植和使用
- linux替换bash,bash脚本_输入输出和管道、替换
- 纽约理工计算机科学怎么样,纽约大学计算机科学在什么学院?_托普仕留学
- 基于STM32的电机--电机概述
- 关于眼镜保护的几点做法
- 中国云服务市场已达66亿美元:阿里云、百度智能云等市占率位列前四
- 华为定制版手机如何解锁及获取ROOT权限
- sp工具中最疼的是_阴阳师:sp青行灯会是一个强力打火机吗?简单进行技能猜测...
- 欧央行缺乏实质性行动,欧元受挫大幅下滑
- 4.3.2 Flink-流处理框架-Flink CDC数据实时数据同步-何为Flink CDC?