PHP状态模式的解释和优点是什么,怎样实现
Admin 2022-09-20 群英技术资讯 426 次浏览
状态模式是一种行为型模式,它允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类,状态模式变化的位置在于对象的状态。
<?php interface State { // 抽象状态角色 public function handle(Context $context); // 方法示例 } class ConcreteStateA implements State { // 具体状态角色A private static $_instance = null; private function __construct() {} public static function getInstance() { // 静态工厂方法,返还此类的唯一实例 if (is_null(self::$_instance)) { self::$_instance = new ConcreteStateA(); } return self::$_instance; } public function handle(Context $context) { $context->setState(ConcreteStateB::getInstance()); } } class ConcreteStateB implements State { // 具体状态角色B private static $_instance = null; private function __construct() {} public static function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new ConcreteStateB(); } return self::$_instance; } public function handle(Context $context) { $context->setState(ConcreteStateA::getInstance()); } } class Context { // 环境角色 private $_state; public function __construct() { // 默认为stateA $this->_state = ConcreteStateA::getInstance(); } public function setState(State $state) { $this->_state = $state; } public function request() { $this->_state->handle($this); } } // client $context = new Context(); $context->request(); $context->request(); $context->request(); $context->request(); ?>
优点
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章带你探究一下在php中什么为什么运算符===比==要快,文章中给大家介绍的非常详细,对大家的学习或工作都具有一定的参考价值
在PHP中,您可以在服务器执行PHP文件之前在该文件中插入一个文件的内容。include和require语句用于在执行流中插入写在其他文件中的有用的代码。include和require除了处理错误的方式不同之外,在其他方面都是相同的:
thinkphp和laravel是不一样的。thinkphp和laravel虽然都是PHP开发框架,但是有很多区别:1、渲染末班的方式不同,thinkphp用“$this->display()”的方式渲染模版,Laravel使用“return view()”方法;2、Laravel是一个重路由的框架,而thinkphp要有控制器方法才能正常访问。
php-fpm解读-进程管理的三种模式—程序媛大丽标明转载以示尊重感谢原作者的分享。php-fpm进程管理一共有三种模式:ondemand、static、dynamic,我们可以在同一个fpm的master配置三种模式,看下图1。php-fpm的工作模式和nginx类似,都是一个master,多个worker模型。每个worker都在accept本pool内的监听套接字(linux已不存
打开phpstorm,找到菜单栏“view”;找到Recent Changes;找到Deleting的那行,这就是刚刚删除的文件;确认下文件是否是刚刚删除的文件;点击Revert进行恢复;最后到文件列表看下,文件是否恢复。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008