PHP策略模式、适配器模式和观察者模式如何实现
导读:这篇文章主要给大家介绍“PHP策略模式、适配器模式和观察者模式如何实现”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考了解一下,希望这篇“PHP策略模式、适配器模式和观察者模式如何实现...
这篇文章主要给大家介绍“PHP策略模式、适配器模式和观察者模式如何实现”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考了解一下,希望这篇“PHP策略模式、适配器模式和观察者模式如何实现”文章对大家有所帮助。
策略模式
特点
定义一系列算法封装起来, 让他们可以相互替代,策略模式提供了管理相关算法族的办法, 提供了可以体会继承关系的棒法, 避免使用多重条件转移语句
实现
?php abstract class Strategy { abstract function goSchool(); } class Run extends Strategy { public function goSchool() { echo "走路去学校"; } } class Subway extends Strategy { public function goSchool() { echo "地铁去学校"; } } class Bike extends Strategy { public function goSchool() { echo "公交去学校"; } } class GoSchoolContext { protected $_stratege; public function __construct($stratege) { $this-> _stratege = $stratege; } public function goSchool() { $this-> _stratege-> goSchool(); } } $traget = new Run(); $obj = new GoSchoolContext($traget); $obj-> goSchool();
适配器模式
特点
需要的东西在面前,但却不能用,而短时间又无法改造它,于是就想办法适配
实现
// 适配器 interface Charget { public function putCharget(); } class China implements Charget { private $v = 220; public function putCharget() { return $this-> v; } } class Adper extends China { public function putCharget() { return parent::putCharget() / 2 + 10; } } class Phone { public function charge(Charget $charge) { if ($charge-> putCharget() != "120") { echo "不能充电"; } else { echo "能充电"; } } } $china = new China(); $adper = new Adper(); $phone = new Phone(); $phone-> charge($adper);
观察者模式
特点
当一个对象状态发生变化时, 依赖他的对象全部收到通知, 并主动更新。观察者模式实现了低耦合, 非侵入式的通知与更新机制。
实现
?php // 主题接口 interface Subject { public function register(Observer $observer); } // 观察者接口 interface Observer { public function watch(); } // 主题 class WatchAction implements Subject { public $_observers = []; public function register(\Observer $observer) { $this-> _observers[] = $observer; } public function notify() { foreach($this-> _observers as $object) { $object-> watch(); } } } // 观察者 class Cat1 implements Observer{ public function watch(){ echo "Cat1 watches TVhr/> "; } } class Dog1 implements Observer{ public function watch(){ echo "Dog1 watches TVhr/> "; } } class People implements Observer{ public function watch(){ echo "People watches TVhr/> "; } } $action = new WatchAction(); $action-> register(new Cat1()); $action-> register(new People()); $action-> register(new Dog1()); $action-> notify();
以上就是关于PHP策略模式、适配器模式和观察者模式如何实现的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助,想要了解更多,欢迎关注网络,小编将为大家输出更多高质量的实用文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PHP策略模式、适配器模式和观察者模式如何实现
本文地址: https://pptw.com/jishu/652894.html