关于“面向对象与面向过程的区别”的个人看法
搜寻了关于“面向对象与面向过程的区别”问题的答案,重点关注知乎的答案,找不到一个令我完全满意的答案,不过受到这些答案的启发,记录下关于这个问题的个人看法
冰箱装大象例子:如何通俗易懂地举例说明“面向对象”和“面向过程”有什么区别? - 王逢琛的回答 - 知乎
https://www.zhihu.com/question/27468564/answer/36761503
- 存在即合理,两者并不是天然对立,而是为了解决现实问题而共存
- 两者在抽象层级上并无高低之分,区别在于抽象的目标不同,面向对象针对对象进行抽象(行为的抽象封装在对象里面),面向过程针对行为进行抽象。在冰箱装大象的例子里面,两种思想的应用同样可行,不过面向过程的思想可能更符合我们的思维习惯
- 面向对象的出现和存在是为了解决面向过程在操作的对象的“不确定性”带来的代码无法重用问题。换种说法,多态的出现导致我们将设计重点从行为转移到对象上,以冰箱装大象为例,如果进一步扩展成A装B的问题,那么对待“装”这一抽象行为,A,B所可能的出现的多种类型对象的具体实现行为不同,这种情况下具体行为依赖于具体对象类型,因此相对而言,面向对象思想能更好的解决问题。
- 综上,面向对象思想的出现其实源于“类型”这一概念的出现,根本在于不断变更的需求和日益庞大的项目
参考链接:https://zhuanlan.zhihu.com/p/28427324
https://www.zhihu.com/question/19729316