状态模式 设计模式_设计模式:状态
状态模式 设计模式
本文将介绍状态设计模式 。 它是行为设计模式之一 。 您无需了解许多理论即可了解模式的主要概念。 该文章将分为几个部分,在其中我将提供有关需要应用该模式的情况,它所具有的利弊以及用法示例的信息。
有时,当对象的内部状态更改时,您需要更改其行为。 State设计模式允许执行此操作。 您可以通过创建代表不同状态和功能的单独类来获得此功能。 当然,这些类必须从一个抽象类继承或实现一个接口。
当需要在运行时通过输入某些State基类的不同子类来更改对象的状态时,可以使用State设计模式。 这种情况同时是有利和不利的,因为我们有明确的,独立的州类别,并带有某种逻辑,而另一方面,类别的数量却在增加。
让我们考虑这个例子。 每年有四个季节:冬天,春天,夏天和秋天。每个季节都有其自己的顺序,例如春天在冬天之后,夏天在春天之后等等。
季节的基本状态界面:
public interface Season {public void theSeason(SeasonContext context);
}
实现Season接口的状态类:
public class Winter implements Season {@Overridepublic void theSeason(SeasonContext context) {System.out.println("Winter is now.");context.setSeason(new Spring());}}
Spring班:
public class Spring implements Season {@Overridepublic void theSeason(SeasonContext context) {System.out.println("Spring is now");context.setSeason(new Summer());}}
我将省略夏季和秋季的课程,因为它们与以前的课程相同。
SeasonContext类:
public class SeasonContext {private Season season;public SeasonContext() {this.season = new Winter();}public void setSeason(Season season) {this.season = season;}public void whatTheSaeson() {season.theSeason(this);}
}
所有这些东西都显示了State模式的体系结构:基本状态接口,实现状态接口和状态上下文的类。 现在让我们看看它是如何工作的:
...public static void main(String[] args) {SeasonContext sc = new SeasonContext();sc.whatTheSaeson();sc.whatTheSaeson();sc.whatTheSaeson();sc.whatTheSaeson();}
...
结果将是:
Winter is now.
Spting is now
Summer is now.
Autumn is now.
翻译自: https://www.javacodegeeks.com/2013/07/design-patterns-state.html
状态模式 设计模式
状态模式 设计模式_设计模式:状态相关推荐
- 状态机设计模式_设计模式-代理/状态机模式
代理模式 是使率非常高的模式: 为其它对象提供一种代理以控制这个对象的访问.该模式也称为委托模式,在使用的时候代理模式可以为我们提供非常好的访问控制. 如下代码 interface IGamePlay ...
- java设计模式之状态模式_Java中的状态设计模式
java设计模式之状态模式 在本教程中,我们将探讨另一种流行的行为设计模式-状态设计模式. 当我们使用可以存在于多个状态的对象时,状态设计模式的知识变得非常有用. 当对象的行为取决于其当前状态时,我们 ...
- android 状态模式,Android编程设计模式之状态模式详解
本文实例讲述了Android编程设计模式之状态模式.分享给大家供大家参考,具体如下: 一.介绍 状态模式中的行为是由状态来决定的,不同的状态下有不同的行为.状态模式和策略模式的结构几乎完全一样,但它们 ...
- java 状态模式 同步_JAVA设计模式之状态模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...
- 【状态模式】Java设计模式之状态模式
何时使用 State模式在实际使用中比较多,适合"状态"的切换.因为我们经常会使用If else if else 进行状态切换,如果针对状态的这样判断切换反复出现,我们就要联想到是 ...
- 状态模式 有限状态机_有限状态机解释
状态模式 有限状态机 The finite state machine (FSM) is a software design pattern where a given model transitio ...
- java 策略模式 促销_设计模式之策略模式
0x01.定义与类型 定义:定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户. 从一系列里抽象出不变的部分 策略模式是将可变的部分从程序中抽象分离成算法 ...
- java状态机设计模式_设计模式总结-State模式
不同的状态,不同的行为;或者说,每个状态有着相应的行为. 二.State模式的适用场合: State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif ...
- python 状态模式_使用状态模式自由切换登录状态
日常开发中,登录和未登录两种状态分别有不同的操作,比如登录后才能评论.收藏.支付购买和编辑资料等操作.我们网购时看到心仪的商品,如果处于登录状态,可以加购物车或直接购买,否则会跳转到登录页面,登录后再 ...
最新文章
- 算法小论——第三章 又把新桃换旧符
- 【数字孪生】工业互联网和数字孪生
- ESPCMS基本导航操作
- asp.net的控件视图状态
- javase阶段总结脑图
- libevent项目分析(一) -- 准备阶段
- 中职 计算机老师 教cad,教师博客应用于职校计算机CAD教学探究.doc
- 7-2 定义日期类 (28 分)
- 实践解析丨Rust 内置 trait:PartialEq 和 Eq
- JavaWeb学习记录(二十五)——权限管理总结
- Caffe中deploy.prototxt 和 train_val.prototxt 区别
- 英雄无敌3pc移植android版,英雄无敌3手机版
- Excel学习 -- 数据透视表功能
- php 腾讯短信接口api,ThinkPHP5——接入腾讯云短信API
- 阿里云要引领数据库市场?这话没毛病
- 黑客全票打飞服务器,《鹅鸭杀》停服三天!更有游戏首发被冲下架
- 智慧灯杆网关+云平台,助力智慧城市智能照明
- 20189221 2018-2019-2 《密码与安全新技术专题》第三周作业
- Word中㎡的上标²变成了2该如何处理
- 淘宝彩蛋--CSS3、Console、web彩蛋指南
热门文章
- 等差区间 线段树+GCD
- 10亿个数中找出最大的10000个数
- Java阻塞队列ArrayBlockingQueue和LinkedBlockingQueue实现原理分析
- vue前期知识点笔记
- 2015蓝桥杯省赛---java---A---8(移动距离)
- MySQL中有外键时数据表的删除方法
- 2的负x次幂图像_数学| NO.2,3 函数 T15
- 处理api返回的数据_API 乐队指挥家,网关服务正式上线
- Java秒杀系统实战系列~RabbitMQ死信队列处理超时未支付的订单(转)
- cuba 平台_CUBA平台:TypeScript SDK和REST API