韩天峰《大话PHP设计模式》听课笔记
课程主要内容
1、PHP面向对象的高级特性
2、11种设计模式
3、PSR-0,Composer,Phar等最流行的技术
目标
掌握PHP各类设计模式,并具备设计纯面向对象框架和系统的能力
二、编程字体的选择 等宽字体 Courier New,Consolas,Source Code Pro(推荐),由Adobe公司专门为程序员设计,免费开源
三、命名空间 5.3以后增加
5.5之后,类自动载入 ,以前用 __autoload(),后被废弃,spl_autoload_register
PSR-0规范 1、命名空间必须与绝对路径一致 2、类名首字母必须大写 3、除入口文件外,其他‘.php’只有一个类
四、SPL标准库
栈,SplStack,先进后出,push,pop
队列,SplQueue,先进先出,enqueue,dequeue
最小堆,SplMinHeap,先进先出,insert,extract
固定长度的数组,SplFixedArray
链式操作,魔术方法 __get/__set, __call/__callStatic, __toString, __invoke
五、三种基础设计模式
工厂模式,工厂方法或类生成对象,而不是在代码里直接new
单例模式,使某个类的对象只允许被创建一次
注册树模式,全局共享和交换对象
六、适配器模式
1、可以将截然不同的函数接口封装成统一的API
2、实际应用举例,数据库操作有mysql,mysqli,pdo,可以用适配器模式统一成一致。类似的场景还有cache适配器,将memcache,redis,apc,file等不同的缓存函数统一成一致
七、策略模式
1、将一组特定的行为和算法封装成类,以适应特定的上下文环境
2、实际举例,假如一个电商系统,针对男女性用户展示不同的商品类目
3、可以实现Ioc,依赖倒置、控制反转
八、数据对象映射模式
1、是将对象和数据存储映射起来,对一个对象的操作可映射为对数据存储的操作
2、实现一个ORM类,对复杂的SQL语句映射成对象属性的操作
九、观察者模式
1、当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新
2、实现了低耦合,非侵入式的通知与更新机制
十、原型模式
1、与工厂模式类似,都是用来创建对象
2、先创建好一个原型对象,然后通过clone来创建新的对象,这样就免去了对象创建时重复的初始化操作
3、适用于大对象的创建,仅需内存拷贝即可
十一、装饰器模式
1、decorator,可以动态地添加修改类的功能
2、一个类提供了一项功能,如果要增加或修改额外的功能,传统的编程模式,需要写一个子类继承它,并重写相应的方法
3、使用装饰器模式,仅需在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性
array_reserve,array_rand
十二、迭代器模式
1、在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素
2、相对于传统的编程模式,可以隐藏遍历元素所需要的操作
\Iterator
十三、代理模式
1、在客户端与实体之间建立一个代理对象(proxy),客户端对实体操作全部委派给代理对象,隐藏实体的具体实现细节
2、Proxy还可以与业务代码分离,部署到另外的服务器,业务代码中通过RPC来委派任务
十四、面向对象设计的基本原则
1、单一职责:一个类只完成一个功能
2、开放封闭:一个类应该是可扩展的,不可修改的
3、依赖倒置:一个类不应该强依赖与另一个类,每个类对于另外一个类都是可替换的
4、配置化:尽可能使用配置,不要硬编码
5、面向接口编程:只需要关心接口,不需要关心实现
配置与设计模式
1、使用ArrayAccess实现配置文件的自动加载
2、在工厂方法中读取配置,生成可配置化的对象
3、使用装饰器模式实现权限验证,模板渲染,JSON串化
4、使用观察者模式实现数据更新事件的一系列更新操作
5、使用代理模式实现数据库的主从自动切换
作者:皎然CEO
链接:https://www.cnblogs.com/jiaoran/p/10457981.html
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦(っ•̀ω•́)っ✎⁾⁾!