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 TV<hr/>"; } } class Dog1 implements Observer{ public function watch(){ echo "Dog1 watches TV<hr/>"; } } class People implements Observer{ public function watch(){ echo "People watches TV<hr/>"; } } $action = new WatchAction(); $action->register(new Cat1()); $action->register(new People()); $action->register(new Dog1()); $action->notify(); 总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注易知道(ezd.cc)的更多内容! 

推荐阅读

    php脚本电脑关机|电脑关机的脚本

    php脚本电脑关机|电脑关机的脚本,,1. 电脑关机的脚本推荐 AutoIt 自动化脚本 其他 按键精灵、……、AutoHotKey、vbs …… 2. 电脑关机

    PHP什么意思

    PHP什么意思,语言,是一种,PHP什么意思PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTM

    创业做网站选择用node好还是php

    创业做网站选择用node好还是php,语言,页面,如果你所开发的是一个PHP网站的前端页面或模板,PHP和Python语言都相对比较简单,所以虽然PHP语

    如何进行phpmyadmin配置 phpmyadmin快速配置方法【详细介绍】

    如何进行phpmyadmin配置 phpmyadmin快速配置方法【详细介绍】,配置,文件,密码,快速,安装配置,方法,    phpmyadmin 配置怎么配置?今天提一下

    php是什么文件格式 php文件打开方法

    php是什么文件格式 php文件打开方法,文件,语言,点击,打开方式,选择,执行,  php文件是一种不能轻易打开的文件,许多人都遇到过点击了php文件后

    PHP文件怎么打开

    PHP文件怎么打开,文件,下载,脚本,怎么打开,语言,选择,PHP文件怎么打开PHP文件一般用Notepad Plus软件打开。PHP文件怎么打开?其实大家并非是需

    php是什么意思

    php是什么意思,执行,语法,语言,特性,文档,脚本语言,php是什么意思很多行外人看到php这三个英文会毫无头绪,完全不知道php是什么意思,本文为大家详

    php 删除数组重复的值

    php 删除数组重复的值,数组,函数,本文目录php 删除数组重复的值如何正确实现PHP删除数组重复元素PHP二维数组如何实现去除重复项php数组怎

    php是前台还是后端语言

    php是前台还是后端语言,语言,支持,语法,性能,版本,提升,php是后端语言,后端是管理、运营、数据挖掘等非面向访问者的东西;php就是在服务器端执行

    PHP中的Yii框架指南

    PHP中的Yii框架指南,框架,安装,配置,应用程序,支持,验证,PHP语言是一门广泛应用的开源脚本语言,它凭借其灵活、高效、安全和易用的特性,成为了网

    聊聊php滑动验证码的实现原理

    聊聊php滑动验证码的实现原理,验证码,滑块,验证,实现原理,图形,拖动,随着互联网的迅速发展,验证码成为了互联网安全保障的重要手段。其中,滑动验

    php的注释有几种

    php的注释有几种,注释,单行注释,作用,多行注释,执行,这是,php的注释有三种,分别是:1、单行注释【//】;2、单行注释【#】;3、多行注释【/** */】。ph

    bcadd php是函数还是扩展

    bcadd php是函数还是扩展,函数,精度,数字,设置,字符串,操作数,bcadd是php中的一个函数,作用是计算两个任意精度数字的加法,该函数的使用语法如“b

    php如何把一个数组倒序输出

    php如何把一个数组倒序输出,输出,数组,倒序,方法,循环,函数,PHP是一种流行的服务器端脚本语言,常用于Web开发。在PHP中,数组是一种非常常见的数据