面向对象设计与传统的面向过程设计有何不同?你可能会认为最本质的区别是,面向对象的代码中有对象。这既不对,也没用。在PHP中,我们经常会看到面向过程的代码也使用对象或者类中包含面向过程的代码。有对象并不意味着一定就是面向对象设计,即使是在Java等必须使用对象的编程语言中也一样。
面向对象代码和面向过程代码的根本区别在于职责的分配方式。面向过程代码采取的是一系列命令和方法调用的形式。控制代码往往负责不同条件的处理。这种自上而下的控制会导致项目中出现重复代码以及依赖关系。通过将处理任务的职责从客户端代码转移到系统中的对象上,面向对象代码可以尽量减少这些依赖关系。
摘录自:《深入PHP:面向对象、模式与实践(第5版)》