Learning PHP设计模式
William Sanders
苏金国, 王宇飞 等译
出版时间:2014年01月
页数:316
通过学习如何在代码中使用设计模式,可以更高效地构建服务器端应用,在这个过程中,你的PHP编程水平也将逐步提高。本书利用大量浅显易懂的例子告诉你如何应用多种面向对象模式,并展示了这些模式在一些成熟的实际项目中的具体应用。
需要学习这些可重用的模式如何帮助你解决复杂的问题,如何组织面向对象代码,以及只改变一些小部分来完成整个大项目的修改。利用你手上的这本《Learning PHP设计模式》,将了解如何采用一种更精巧的编程风格,这将大大减少开发时间。

· 学习设计模式概念,包括如何选择模式来处理特定的问题。
· 对面向对象编程概念有一个概要了解,如组合、封装、多态和继承。
· 应用创建型设计模式动态地创建页面(采用一种工厂方法而不是直接实例化)。
· 使用结构型设计模式对原有的对象或结构做出修改,而无需改变原来的代码。
· 使用行为型模式帮助对象协同工作来完成任务。
· 使用代理和职责链等行为型模式与MySQL交互。
· 探索使用PHP内置设计模式接口的方法。

William Sanders博士,哈特福德大学多媒体Web设计和开发方向教授。多年来一直积极地参与PHP设计模式方面的工作。作为《ActionScript 3.0 Design Patterns》(O’Reilly)一书的合著者,他还出版过50余本计算机以及与计算机相关的图书。
  1. 前言
  2. 第1部分 轻松掌握设计模式基础
  3. 第1章 PHP与面向对象编程
  4. 1.1 中级和高级编程初探
  5. 1.2 为什么采用面向对象编程
  6. 1.2.1 解决问题更容易
  7. 1.2.2 模块化
  8. 1.3 类与对象
  9. 1.3.1 单一职责原则
  10. 1.3.2 PHP中的构造函数
  11. 1.4 客户类作为请求者
  12. 1.5 速度如何
  13. 1.5.1 开发和修改速度
  14. 1.5.2 团队速度
  15. 1.6 顺序和过程式编程有什么问题
  16. 1.6.1 顺序编程
  17. 1.6.2 过程编程
  18. 1.6.3 即时回报还是长期回报
  19. 第2章 OOP基本概念
  20. 2.1 抽象
  21. 2.1.1 抽象类
  22. 2.1.2 抽象属性和方法
  23. 2.1.3 接口
  24. 2.1.4 接口和常量
  25. 2.1.5 类型提示:类似数据类型
  26. 2.2 封装
  27. 2.2.1 日常生活中的封装
  28. 2.2.2 通过可见性保护封装
  29. 2.2.3 获取方法和设置方法
  30. 2.3 继承
  31. 2.4 多态
  32. 2.4.1 一个名字,多个实现
  33. 2.4.2 设计模式中的内建多态性
  34. 2.5 慢慢来
  35. 第3章 基本设计模式概念
  36. 3.1 MVC实现编程松耦合和重新聚焦
  37. 3.2 设计模式基本原则
  38. 3.2.1 第一个设计模式原则
  39. 3.2.2 代码提示中使用接口数据类型
  40. 3.2.3 抽象类及其接口
  41. 3.2.4 第二个设计模式原则
  42. 3.2.5 使用客户的基本组合
  43. 3.2.6 委托:IS-A和HAS-A的差别
  44. 3.3 设计模式作为备忘录
  45. 3.4 选择设计模式
  46. 3.4.1 是什么导致了重新设计
  47. 3.4.2 什么会变化
  48. 3.4.3 设计模式与框架有什么区别
  49. 第4章 结合使用设计模式和UML
  50. 4.1 为什么是统一建模语言 (UML)
  51. 4.2 类图
  52. 4.3 参与者符号
  53. 4.4 关系说明
  54. 4.4.1 相识关系
  55. 4.4.2 聚合关系
  56. 4.4.3 继承和实现关系
  57. 4.4.4 创建关系
  58. 4.4.5 多重关系
  59. 4.5 对象图
  60. 4.6 交互图
  61. 4.7 面向对象编程中图和记法的作用
  62. 4.8 UML工具
  63. 4.9 其他UML
  64. 第2部分 创建型设计模式
  65. 第5章 工厂方法设计模式
  66. 5.1 什么是工厂方法模式
  67. 5.2 何时使用工厂方法
  68. 5.3 最简单的例子
  69. 5.3.1 工厂的工作
  70. 5.3.2 客户
  71. 5.4 适应类的修改
  72. 5.4.1 增加图像元素
  73. 5.4.2 调整产品
  74. 5.4.3 修改文本产品
  75. 5.4.4 修改图像产品
  76. 5.4.5 增加新产品和参数化请求
  77. 5.4.6 一个工厂多个产品
  78. 5.4.7 新工厂
  79. 5.4.8 新产品
  80. 5.4.9 有参数的客户
  81. 5.4.10 辅助类
  82. 5.4.11 文件图
  83. 5.4.12 产品改变:接口不变
  84. 第6章 原型设计模式
  85. 6.1 原型设计模式
  86. 6.2 何时使用原型模式
  87. 6.3 克隆函数
  88. 6.3.1 克隆不会启动构造函数
  89. 6.3.2 构造函数不要做具体工作
  90. 6.4 最简单的原型例子
  91. 6.5 为原型模式增加OOP
  92. 6.5.1 现代企业组织
  93. 6.5.2 接口中的封装
  94. 6.5.3 接口实现
  95. 6.5.4 组织客户
  96. 6.5.5 完成修改,增加特性
  97. 6.5.6 动态对象实例化
  98. 6.6 PHP世界中的原型
  99. 第3部分 结构型设计模式
  100. 第7章 适配器模式
  101. 7.1 什么是适配器模式
  102. 7.2 何时使用适配器模式
  103. 7.3 使用继承的适配器模式
  104. 7.4 使用组合的适配器模式
  105. 7.4.1 从桌面环境转向移动环境
  106. 7.4.2 适配器和变化
  107. 第8章 装饰器设计模式
  108. 8.1 什么是装饰器模式
  109. 8.2 何时使用装饰器模式
  110. 8.3 最简单的装饰器例子
  111. 8.3.1 Component接口
  112. 8.3.2 Decorator接口
  113. 8.3.3 具体组件
  114. 8.3.4 具体装饰器
  115. 8.3.5 客户
  116. 8.4 关于包装器
  117. 8.4.1 包装器包装基本类型
  118. 8.4.2 PHP中的内置包装器
  119. 8.4.3 设计模式包装器
  120. 8.5 包装多个组件的装饰器
  121. 8.5.1 多个具体组件
  122. 8.5.2 包含多个状态和值的具体装饰器
  123. 8.5.3 开发人员约会服务
  124. 8.6 HTML用户界面
  125. 8.6.1 Client类传递HTML数据
  126. 8.6.2 从变量名到对象实例
  127. 8.6.3 增加装饰
  128. 第4部分 行为型设计模式
  129. 第9章 模板方法模式
  130. 9.1 什么是模板方法模式
  131. 9.2 何时使用模板方法
  132. 9.3 最简单的例子:对图像和图题使用模板方法模式
  133. 9.3.1 抽象类
  134. 9.3.2 具体类
  135. 9.4 客户
  136. 9.5 好莱坞原则
  137. 9.6 结合其他设计模式使用模板方法模式
  138. 9.6.1 客户工作负担减轻
  139. 9.6.2 模板方法参与者
  140. 9.7 工厂方法参与者
  141. 9.8 模板方法设计模式中的钩子
  142. 9.8.1 建立钩子
  143. 9.8.2 实现钩子
  144. 9.8.3 客户以及捕获钩子
  145. 9.9 短小精悍的模板方法模式
  146. 第10章 状态设计模式
  147. 10.1 什么是状态模式
  148. 10.2 何时使用状态模式
  149. 10.3 状态机
  150. 10.4 开灯关灯:最简单的状态设计模式
  151. 10.4.1 情境为王
  152. 10.4.2 状态
  153. 10.4.3 客户通过上下文做出请求
  154. 10.5 增加状态
  155. 10.5.1 改变接口
  156. 10.5.2 改变状态
  157. 10.5.3 更新Context类
  158. 10.5.4 更新客户
  159. 10.6 导航工具:更多选择和单元格
  160. 10.6.1 建立一个矩阵状态图
  161. 10.6.2 建立接口
  162. 10.6.3 上下文
  163. 10.6.4 状态
  164. 10.6.5 客户选择一条路径
  165. 10.7 状态模式与PHP
  166. 第5部分 MySQL和PHP设计模式
  167. 第11章 通用类负责连接,代理模式保证安全
  168. 11.1 一个简单的MySQL接口和类
  169. 11.1.1 重要的接口
  170. 11.1.2 通用MySQL连接类和静态变量
  171. 11.1.3 简单客户
  172. 11.2 保护代理完成登录
  173. 11.2.1 建立登录注册
  174. 11.2.2 实现登录代理
  175. 11.3 代理和真实世界安全
  176. 第12章 策略设计模式的灵活性
  177. 12.1 封装算法
  178. 12.1.1 区分策略和状态设计模式
  179. 12.1.2 请不要加条件语句
  180. 12.1.3 算法族
  181. 12.2 最简单的策略模式
  182. 12.2.1 客户和触发器脚本
  183. 12.2.2 Context类和Strategy接口
  184. 12.2.3 具体策略
  185. 12.3 增加数据安全性和参数化算法来扩展策略模式
  186. 12.3.1 数据安全性辅助类
  187. 12.3.2 为算法方法增加参数
  188. 12.3.3 调查表
  189. 12.3.4 数据输入模块
  190. 12.3.5 客户请求帮助
  191. 12.3.6 Context类重要的小改变
  192. 12.3.7 具体策略
  193. 12.4 灵活的策略模式
  194. 第13章 职责链设计模式
  195. 13.1 推卸责任
  196. 13.2 MySQL咨询台中的职责链
  197. 13.2.1 构建和加载响应表
  198. 13.2.2 咨询台职责链
  199. 13.3 自动职责链和工厂方法
  200. 13.3.1 职责链和日期驱动请求
  201. 13.3.2 工厂方法完成任务
  202. 13.4 易于更新
  203. 第14章 利用观察者模式构建多设备CMS
  204. 14.1 内置观察者接口
  205. 14.2 何时使用观察者模式
  206. 14.3 使用SPL实现观察者模式
  207. 14.3.1 SplSubject
  208. 14.3.2 SplObserver
  209. 14.3.3 SplObjectStorage
  210. 14.3.4 SPL具体主题
  211. 14.3.5 SPL具体观察者
  212. 14.3.6 SPL客户
  213. 14.4 自由的PHP和观察者模式
  214. 14.4.1 抽象Subject类和ConcreteSubject实现
  215. 14.4.2 观察者和多个具体观察者
  216. 14.4.3 客户
  217. 14.5 建立一个简单CMS
  218. 14.5.1 CMS工具
  219. 14.5.2 多个设备观察者
  220. 14.6 用OOP方式思考
书名:Learning PHP设计模式
作者:William Sanders
译者:苏金国, 王宇飞 等译
国内出版社:中国电力出版社
出版时间:2014年01月
页数:316
书号:978-7-5123-5272-8
原版书书名:Learning PHP Design Patterns
原版书出版商:O'Reilly Media
William Sanders
 
William B. Sanders博士是哈特福德大学多媒体Web设计和开发方向的教授,主要讲授有关PHP、MySQL、C#、SQL、HTML5、CSS和ActionScript 3.0等内容的多门课程,另外还讲授其他一些Internet语言课程。他合著有《ActionScript 3.0 Design Patterns》(O’Reilly, 2007)一书,多年来一直积极地参与PHP设计模式方面的工作。他出版过45本计算机以及与计算机相关的书,使用过多种不同编程软件,从Basic到汇编语言到Flash Media Server都有涉猎,另外他还担任不同计算机软件公司的顾问和beta版测试人员,包括Macromedia和Adobe。他还是一位Apple iOS开发人员。
 
 
本书封面上的动物是一条阿拉斯加鲽鱼。阿拉斯加鲽鱼是一种海鱼,主要生活在太平洋东部阿拉斯加湾到北部楚克奇海和西部日本海地区。从海面以下600米到大陆架底部都能看到这种鲽鱼的身影。这种鲽鱼属于一种比目鱼,这说明它的眼睛只长在一侧,另一侧面向海底,是看不到的。这些特殊的比目鱼最长可以长到24英寸(2英尺),在长眼睛的一侧可能有5到7个小骨锥。
这种鲽鱼寿命最长为30年,这要归功于捕鱼业对这种鱼没有太大兴趣。阿拉斯加鲽鱼之所以数量众多,这也是捕鱼业更侧重其他底栖鱼(如黄鳍金枪鱼)的附带结果。