php状态模式(state pattern)
2024-10-13 09:35:27
...
<?php /* The state pattern encapsulates the varying behavior for the same object based on its internal state, making an object appear as if it has changed its class. */ interface Statelike { public function writeName(StateContext $context, $name); } class StateLowerCase implements Statelike { public function writeName(StateContext $context, $name) { echo strtolower($name); $context->setState(new StateMultileUpperCase()); } } class StateMultileUpperCase implements Statelike { private $count = 0; public function writeName(StateContext $context, $name) { $this->count++; echo strtoupper($name); if ($this->count > 1) { $context->setState(new StateLowerCase()); } } } class StateContext { private $state; public function setState(Statelike $state) { $this->state = $state; } public function writeName($name) { $this->state->writeName($this, $name); } } $stateContext = new StateContext(); $stateContext->setState(new StateLowerCase()); $stateContext->writeName('Monday<br/>'); $stateContext->writeName('TuesDay<br/>'); $stateContext->writeName('Wednesday<br/>'); $stateContext->writeName('Thursday<br/>'); $stateContext->writeName('Friday<br/>'); $stateContext->writeName('Saturday<br/>'); $stateContext->writeName('Sunday<br/>'); ?>
最新文章
- kd树和knn算法的c语言实现
- 实践最简单的项目:WC
- 【自然框架】终于把源码弄到git上了。
- hduoj 4708 Rotation Lock Puzzle 2013 ACM/ICPC Asia Regional Online —— Warmup
- XMLHttpRequest 2.0与FileReader接口的方法
- .Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(二)级联删除和触发器
- android中利用实现二级联动的效果
- zoj 1083 Frame Stacking
- VC 绘图技巧--自定义形状图形
- c++设计模式-----抽象工厂模式
- Java静态代理和动态代理总结
- OpenCV 之 网络摄像头
- Egg + Vue 服务端渲染工程化实现
- IOS设备设计完整指南
- [wordpress]WordPress地址(URL)错误,修改解决方案
- WPF界面假死
- chromedriver与chrome各版本的对应关系表
- Linux下的文件系统2
- Newtonsoft.Json解析数组
- 数据结构与算法之PHP查找算法(顺序查找)