深入PHP 面向对象、模式与实践 第6章 对象与设计


深入PHP 面向对象、模式与实践 第6章 对象与设计


引言

本章包括以下内容:

  • 设计基础:设计是什么?面向对象设计和过程式编程有什么不同?
  • 类的内容:如何决定一个类中应该包含什么?
  • 封装(encapsulation):在类的接口后面隐藏实现和数据。
  • 多态(polymorphism):使用一个共同的父类,允许在运行时透明地替换特定的子类。
  • UML:使用图表来描述面向对象结构。

面向对象和过程式编程的一个核心区别是如何分配职责。

职责、内聚(cohesion)、耦合、正交(orthogonality)。

4个方向标:

  • 代码重复
  • 类知道的太多
  • 万能的类
  • 条件语句

UML

the UML 是 Unified Modeling Language (统一建模语言)的缩写。

类图

描述类

属性

操作

描述继承

描述实现

关联

继承只是面向对象系统中诸多关系中的一种。

当一个类的属性保存了对另一个类的一个实例(或多个实例)的引用时,就产生了关联。

聚合

与关联很相似,聚合(aggregation)描述了一个类长期持有其他类的一个或多个实例的情况。 通过聚合,被引用的对象实例成为引用对象的一部分。

组合

组合和聚合类似,组合是一个更强的关系。在组合中,被包含对象只能被它的容器所引用。当容器被删除时,它也应该被删除。

描述使用

一个对象使用另一个对象的关系在UML中被描述为一个依赖关系。它是很短暂的一种关系,因为它并非描述类之间的长久关系。 使用类并没有把被使用类保存为类中的属性,只是把被使用的类作为类方法的参数或者作为方法调用的结果得到。 与关联有着根本的不同。

使用注解

类图可以捕捉到系统的结构,但类图并不能解释类处理任务的过程。所以可以使用注解来补充说明。

时序图

时序图(sequence diagram)是基于对象而不是基于类的,它用于为系统中过程化的行为建模。






参考资料

《深入PHP 面向对象、模式与实践(第3版)》 https://ibaiyang.github.io/blog/books/深入PHP面向对象模式与实践.pdf


返回