首页IT科技浅谈php设计模式的状态模式选择(浅谈PHP设计模式的状态模式)

浅谈php设计模式的状态模式选择(浅谈PHP设计模式的状态模式)

时间2025-07-17 19:14:31分类IT科技浏览3644
导读:简介: 状态模式,属于行为型的设计模式。当一个对象的内在状态发生改变时,允许改变其行为,这个对象看起来像是改变了其类。 适用场景: 控制一个对象的状态改变过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类中。 一个对象的行为取决于它的状态,并且在运行时刻根据状...

简介:

状态模式             ,属于行为型的设计模式             。当一个对象的内在状态发生改变时                    ,允许改变其行为        ,这个对象看起来像是改变了其类                    。

适用场景: 控制一个对象的状态改变过于复杂时          ,把状态的判断逻辑转移到表示不同状态的一系列类中        。 一个对象的行为取决于它的状态                   ,并且在运行时刻根据状态改变它的行为时            ,方便使用状态模式          。 优点:

消除复杂的分支语句                   。

缺点:

增加类的数量       ,增加复杂度            。

代码: abstract class State { abstract function doSth(Order $order); } class ZeroStatus extends State { public function doSth(Order $order) { if($order->status == 0) { echo "已下单\n"; } else { $order->setObj(new OneStatus()); $order->doSth(); } } } class OneStatus extends State { public function doSth(Order $order) { if($order->status == 1) { echo "已支付\n"; } else { $order->setObj(new TwoStatus()); $order->doSth(); } } } class TwoStatus extends State { public function doSth(Order $order) { if($order->status == 2) { echo "待收货\n"; } else { echo "..."; } } } class Order { private $obj; public $status; public function __construct() { $this->obj = new ZeroStatus(); } public function setObj(State $state) { $this->obj = new $state; } public function setStatus($status) { $this->status = $status; } public function doSth() { $this->obj->doSth($this); } } $order = new Order(); $order->setStatus(0); $order->doSth(); $order->setStatus(1); $order->doSth(); $order->setStatus(2); $order->doSth(); $order->setStatus(3); $order->doSth();

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
手工活随时可做(手工可以做些什么赚钱-手工在家做活厂家回收的,要看厂家这两点做得怎么样)