课程主要内容
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实现配置文件的自动加载
 
 

韩天峰《大话PHP设计模式》听课笔记的更多相关文章

  1. HeadFirst设计模式读书笔记--目录

    HeadFirst设计模式读书笔记(1)-策略模式(Strategy Pattern) HeadFirst设计模式读书笔记(2)-观察者模式(Observer Pattern) HeadFirst设计 ...

  2. cs231n spring 2017 lecture9 CNN Architectures 听课笔记

    参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的sh ...

  3. 韩天峰博客 php基础知识学习记录

    http://rango.swoole.com 写好PHP代码真的不容易,给大家几个建议: 慎用全局变量,全局变量不好管理的,会导致你的代码依赖于全局变量,而耦合度太高. 一定不要复制粘贴代码,可重用 ...

  4. C#设计模式学习笔记-单例模式随笔

    最近学习 设计模式,从单例模式入手 啥是单例模式: 要实现一个单例类的话,首先,肯定是不能让用户自行生产的,那就是说明不能让用户new,所以,就必须把构造函数设置成为私有的 因为静态变量的生命周期跟整 ...

  5. 设计模式学习笔记--备忘录(Mamento)模式

    写在模式学习之前 什么是设计模式:在我们进行程序设计时,逐渐形成了一些典型问题和问题的解决方式,这就是软件模式:每个模式描写叙述了一个在我们程序设计中常常发生的问题,以及该问题的解决方式:当我们碰到模 ...

  6. C#设计模式学习笔记-单例模式(转)

    C#设计模式学习笔记-单例模式 http://www.cnblogs.com/xun126/archive/2011/03/09/1970807.html 最近在学设计模式,学到创建型模式的时候,碰到 ...

  7. Java设计模式学习笔记(二) 简单工厂模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 正文开始... 1. 简介 简单工厂模式不属于GoF23中设计模式之一,但在软件开发中应用也较为 ...

  8. Java设计模式学习笔记(三) 工厂方法模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 简介 上一篇博客介绍了简单工厂模式,简单工厂模式存在一个很严重的问题: 就是当系统需要引入 ...

  9. Java设计模式学习笔记(四) 抽象工厂模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 抽象工厂模式概述 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问 ...

  10. Java设计模式学习笔记(五) 单例模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 使用单例模式的原因 以Windows任务管理器为例,在Windows系统中,任务管理器是唯 ...

随机推荐

  1. Struts2 返回 json 格式数据

    最近由于工作原因,没时间更新,那些没能看到的同学,很抱歉了,话不多说,继续写~~ 关于json的返回需要用到一个工具包来将书转换为json格式,在此用到的jar包为: import net.sf.js ...

  2. python全栈开发中级班全程笔记(第二模块)第 二 部分:函数基础(重点)

    python学习笔记第二模块         第二部分    :    函数(重点) 一.函数的作用.定义 以及语法 1.函数的作用 2.函数的语法和定义 函数:来源于数学,但是在编程中,函数这个概念 ...

  3. 【优秀的图片后期编辑工具】Luminar 3.1 for Mac

     [简介] 今天和大家分享最新的 Luminar for Mac 3.1 版本,支持中文界面,Luminar是一款Mac上优秀的图片后期处理工具,功能类似 Photoshop Lightroom 等软 ...

  4. EF Code First关系规则及配置

    1.一对多关系 关系表: Category 分类表 Product 产品表 分类与产品之间的一对多关系 1>.产品实体类不指定外键属性 Domain中类定义: Category.cs 1 usi ...

  5. matlab 加根号

    text(3,0.5,'z=0.2$$\sqrt{c/h_0}$$+0.3','interpreter','latex')

  6. Lambda表达式与函数式接口

    Lambda表达式的类型,也被称为目标类型(targer type),Lambda表达式的目标类型必须是"函数式接口(functional interface)".函数式接口代表只 ...

  7. 浅入深出Vue系列

    浅入深出Vue导航 导航帖,直接点击标题即可. 文中所有涉及到的资源链接均在最下方列举出来了. 前言 基础篇 浅入深出Vue:工具准备之WebStorm搭建及配置 浅入深出Vue之工具准备(二):Po ...

  8. spring依赖注入之构造函数注入,set方法注入

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  9. js较深入的知识点

    浏览器渲染过程是怎样的?重绘重排是什么?如何避免过多的重绘重排? 将html解析为dom树; 将css解析为cssom; 结合DOM树和CSSOM树,生成一棵渲染树(Render Tree); 生成布 ...

  10. Spring缓存注解@Cacheable

    @Cacheable @Cacheable 的作用 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存 @Cacheable 作用和配置方法 参数 解释 example value 缓存的名称, ...