首页
学习
活动
专区
工具
TVP
发布

PHP设计模式——状态模式

当你对快乐状态,温和状态或愤怒状态有其他逻辑时。它引入了代码修改,并且记住我们在这里只是在谈论sayHi()函数。当基于情绪的条件适用于其他岗位的各个方面时,会发生什么? 是时候改变了。...在这种情况下,我们就需要使用状态模式(State Pattern)。状态模式使我们可以封装变化的部分,即sayHi函数。具体取决于支持代表的心情。...首先,让我们创建一个状态接口(StateInterface),所有后续状态都必须实现它: interface StateInterface { public function sayHi(); }...三个状态类仍然可以通过组合来更改主要类的状态。 现在,SupportRep变得更加整洁,如果需要添加任何其他逻辑,则可以将其作为单独的状态类来完成。 SupportRep的其他功能可以委托给状态类。...在我们的示例中,状态模式允许对象(SupportRep对象)在其内部状态更改(在HappyState,ModerateState和AngryState之间切换)时更改其行为(各个状态类中的sayHi()

46310
您找到你想要的搜索结果了吗?
是的
没有找到

PHP设计模式之状态模式

PHP设计模式之状态模式 状态模式从字面上其实并不是很好理解。这里的状态是什么意思呢?保存状态?那不就是备忘录模式了。其实,这里的状态是类的状态,通过改变类的某个状态,让这个类感觉像是换了一个类一样。...public function Handle(): State { echo '当前是B状态', PHP_EOL; return new ConcreteStateA...完整代码:https://github.com/zhangyue0503/designpatterns-php/blob/master/22.state/source/state.php 实例 通常的商城应用中都会有会员体系的存在...完整源码:https://github.com/zhangyue0503/designpatterns-php/blob/master/22.state/source/state-member.php...$m->discount(), PHP_EOL; 说明 如果不使用状态模式,在Member的discount()方法中,我们可能需要写很多层if...else...判断条件 同时,这也带来了方法体会越来越长

52420

PHP设计模式之状态模式定义与用法详解

本文实例讲述了PHP设计模式之状态模式定义与用法。分享给大家供大家参考,具体如下: 什么是状态设计模式 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。...状态实例 IState接口 IState.php <?...PHP 很多人把状态设计模式看做是实现模拟器和游戏的主要方法.总的说来, 这确实是状态模式的目标,不过险些之外, 状态模型(状态引擎)和状态设计模式在PHP中也有很多应用.用PHP完成更大的项目时, 包括...PHP开发人员如何创建包含多个状态的程序, 将决定状态模式的使用范围....所以不仅状态机在游戏和模拟世界中有很多应用, 实际上状态模型还有更多适用的领域.只要PHP程序的用户会用到一组有限的状态, 开发人员就可以使用状态设计模式.

29120

PHP 容器化引发线上 502 错误状态码的修复

.## 背景笔者所在公司技术栈为 Golang + PHP,目前部分项目已经逐步转 Go 语言重构,部分 PHP 业务短时间无法用 Go 重写。...正因为 PHP 虚拟机模式,每次扩容需要流量剔除、克隆、操作负载均衡、验证流量等等,**推进 PHP 容器化就显得格外重要。...**公司在去年年中,已经开始进行 PHP 容器化,不过由于项目优先级以及人力原因,进度较为迟缓。## 事情经过1. 某项目进行 PHP 容器化改造,切换少许流量到容器中2. 逐步加大灰度流量3....我们的 PHP 业务的 Pod,由以下 5 个容器组成:- nginx- php-fpm- metric(监控)- jaeger(链路追踪)- log(日志收集)滚动时存在关闭旧 Pod 启动新 Pod...- https://linux.die.net/man/8/php-fpm](https://linux.die.net/man/8/php-fpm);2.

21540

PHP设计模式入门之状态模式原理与实现方法分析

本文实例讲述了PHP设计模式入门之状态模式原理与实现方法。分享给大家供大家参考,具体如下: 想必大家都用过自动售卖的自动饮料机吧,塞入硬币或纸币,选择想要的饮料,饮料就会在机器的下方滚出。...首先我们可以分享一下这部饮料机有几种状态 一、没有钱的状态 二、有钱的状态 三、售出的状态 四、销售一空的状态 好吧,知道了这些状态之后我们开始写代码了! JuiceMachine.php <?...php /** * 饮料机 * @author ben * */ class JuiceMachine{ /** * 糖果机一共存在四种状态:没钱,有钱,成功售出以及销售一空 * * 没钱的状态 *.../state/WinnerState.php'; class JuiceMachine { /** * 记录糖果机当前的状态,初始化状态为售空 * * @var object */ private $...》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。

31620

线程状态&线程池状态&任务状态

在平时的开发工作中,我们一定会接触到线程,线程池,以及FutureTask等.那么它们的状态又是如何流转的呢? 接下来我用三张图来让读者从全局观了解熟悉它们的状态变化....线程状态 线程的状态共有6个,分别是 NEW RUNNABLE WAITING TIMED_WAITING BLOCKED TERMINATED 这里所说的线程状态是线程在JVM中的状态,那么线程在操作系统中的对应状态又是什么呢...线程池状态 线程池的状态共有5个,分别是 RUNNING SHUTDOWN STOP TIDYING TERMINATED 当我们在向线程池提交任务的时候,流程是什么?...请期待 线程池中的任务状态 向线程池提交的任务也有相应的状态....请期待 此篇文章主要是先让读者对线程状态,线程池状态,任务状态有个全局观, 后面会有专题问题分别介绍它们.

91020

php设计模式之状态模式实例分析【星际争霸游戏案例】

本文实例讲述了php设计模式之状态模式。...思路:把状态作为属性,兵种类本身只控制状态的变化,具体的行为由状态类定义。 状态(State)模式示例: <?...php //坦克状态的接口 interface TankState { //坦克的攻击方法 public function attack(); } //坦克普通状态...更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串...(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助。

29520
领券