zoukankan      html  css  js  c++  java
  • 韩天峰《大话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实现配置文件的自动加载
     
     
  • 相关阅读:
    Arpa's weak amphitheater and Mehrdad's valuable Hoses
    Arpa's loud Owf and Mehrdad's evil plan
    穷游中国在统题
    2016 ACM Amman Collegiate Programming Contest D Rectangles
    区间求和
    Redis 连接池的问题
    eBay 使用ReviseInventoryStatusCall调整库存和价格
    eBay Notification介绍
    Quartz.Net 配置模板范例
    Quartz.net misfire实践
  • 原文地址:https://www.cnblogs.com/jiaoran/p/10457981.html
Copyright © 2011-2022 走看看