课程主要内容
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. Xcode10 不能导入头文件(导入头文件不提示)

    连接地址:https://blog.csdn.net/wyz670083956/article/details/87774705 xcode10可能是:Project Settings

  2. django中引入bootstrap4.3

    1.下载bootstrap4.3的包:https://getbootstrap.com/ 2.将下载后的文件放在project下新创建的static目录下.例如我的project是mysite,则放在 ...

  3. 010-2 Socket套接字类型

    ocket套接字类型 成员名称 说明 Dgram 支持数据报,即为固定 (通常很小) 的最大长度的无连接的. 不可靠的消息. 消息可能会丢失或重复,并且可能不按顺序抵达. 一个 Socket 类型的  ...

  4. C#调用DLL文件提示试图加载格式不正确的程序

    最近在调用第三方的DLL遇到了一个问题:试图加载格式不正确的程序,找了好久发现都没有解决问题,一直报错,后来发现是程序编译时的配置错了,要将项目->属性->平台选中release-X86 ...

  5. enumerate列表继续前文的计数

    \documentclass[a4paper]{article} \usepackage{enumitem} % load the package \begin{document} \section{ ...

  6. 开放源代码的设计层面框架Spring——day04

    spring第四天     一.Spirng中的JdbcTemplate         1.1JbdcTemplate概述             他是spring框架中提供的一个对象,是对原始Jd ...

  7. SHELL:多文件的重命名和移动

    rename find mv #实现查找png 和 jpeg文件 #!/bin/bash #file name: rename.sh #use: rename.jpg  and .png files ...

  8. Date Structure01-绪论作业

    一.作业题目 仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子.分母均为整数且分母不为零的分数). 有理数基本运算:1.构造有理数T,元素e1,e2分别被赋以分子.分母值2 ...

  9. mysql—增删改查语句总结

    关于MySQL数据库——增删改查语句集锦 一.基本的sql语句 CRUD操作: create 创建(添加) read 读取 update 修改 delete 删除 .添加数据 ,'n001','201 ...

  10. openwrt 编译

    完整的编译过程: http://www.280i.com/tech/3353.html源更新: https://blog.csdn.net/ypbsyy/article/details/8121836 ...