Php设计模式简要总结.docx_第1页
Php设计模式简要总结.docx_第2页
Php设计模式简要总结.docx_第3页
Php设计模式简要总结.docx_第4页
Php设计模式简要总结.docx_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Php基本设计模式:工厂 单例 注册1.工厂方法或类生成对象 而不是随意去new 对象2.单例是类的对象只创建一个3.注册 即全局共享和交换对象4.适配器模式先写一个数据库接口 包括connect query 和close然后在mysql.php,mysqli,pdo中分别implements 他这样调用的时候是类名不同 但是操作接口是一致的5.策略模式:将一组特定的行为和算法封装成类以适应特定的上下文环境例子:电商网站,针对男女客户不同跳转到不同的商品目录。传统的做法是if else 硬编码。增加或修改的话要改很多策略模式就是新增或修改策略即可。首先写一个接口strage。然后写针对男性和女性用户的实现 分别implement strage 即femaleStrage maleStrage最后是调用 先写一个class 这个class有set方法 外部根据femle还是male 来new femalestrage 还是malestrage Class 根据传来的strage去调用具体实现 6.数据对象映射模式把对象和数据存储映射起来 对对象的操作映射为对数据存储的操作 面向对象7.观察者模式一个对象状态发生改变 依赖他的对象全部会收到通知并自动更新比如一个事件发生 要执行一串更新 传统方式是在代码后加入逻辑处理 但是难以维护 观察者模式低耦合 非入侵式的通知与更新机制观察者更新时操作啥 updateAdd是添加观察者 notify是当事件发生时更新观察者的接口一个观察者事件 事件发生调用notify去处理为事件添加观察者 调用trigger个人理解:观察者是处理一个事件发生后更新与此事件发生相关的一些操作 这样做的好处是不用if else逻辑 那样比较混乱 事实上还是事件发生调用notify 挨个去处理每个事件8.原型模式用来创建对象。先创建好一个原型对象 然后clone原型创建新的对象 免去类创建时重复的初始化操作。适用于大对象的创建。因为创建大的开销比较大 这样可以直接内存copy首先创建 然后clone 9.装饰器模式传统方式 重写draw 调用父类方法 首先定义装饰器的接口 包括before*和after*;然后在需要的类中定义一个方法 addDecorator添加装饰器(array) 定义before* 和after*;分别循环每个装饰器,执行装饰器里定义的before和after方法;在代码之前和之后添加$this-before*和$this-after*使用时实现decoratator接口使用前添加进decoratator数组即可10.迭代器模式class AllUser implements Iterator protected $ids; protected $data = array(); protected $index; function _construct() $db = Factory:getDatabase(); $result = $db-query(select id from user); $this-ids = $result-fetch_all(MYSQLI_ASSOC); /获取当前元素 function current() $id = $this-ids$this-indexid; return Factory:getUser($id); /获取下一个元素 function next() $this-index +; /用来验证 当前是否还有下一个元素 function valid() return $this-index ids); /重置整个迭代器 function rewind() $this-index = 0; /在迭代器中的位置 function key() return $this-index; 代理模式例如通过操作对象实现对数据的操作 不用关心数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论