设计模式之美学习笔记06: 面向对象对比面向过程的优势
2019-11-15
今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第6节的学习笔记,第6节是专栏中介绍"面向对象"这一设计原则和设计思想的一节。
常见的编程范式 #
本节主要对比了面向对象与面向过程的优势,是偏理论性的一节。提到了大家比较熟知的三种编程范式: 过程式
、面向对象
、函数式
。
因为函数式编程和GOF设计模式
的套路关系不大,所以作者王争老师也说了在专栏中不会涉及函数式编程。
另外在编程语言中还有一种面向消息
的编程方式,本节没有提及。
常见编程范式:
- 过程式 - C
- 面向对象 - Java、Python
- 函数式 - Haskell
- 面向消息 - Erlang
编程范式就像是编程语言的流派,其实很多语言并不局限于一个流派,就像许式伟大神在Go,基于连接与组合的语言中提到的,Go语言就算是多范式语言,并没有遵循特定的流派。
- Go支持过程式,但只是语言基础特性。其实可以理解为几乎所有编程语言都把过程式作为语言的基础特性。
- 面向对象,但将面向对象的特性最小化。Go不提倡继承,拒绝提供继承语法。
- 面向消息(但不纯粹),Go提供了channel,但并没有禁止使用共享内存的方式
- 函数式(但不纯粹),Go支持闭包,但并不是纯粹的函数式语言
因此个人理解:“存在即合理”,每种编程范式都有其优点。GOF设计模式
充分利用了面向对象的四大特性。面向对象编程更适合大型复杂程序开发,使程序更易扩展、易复用、易维护。每种编程范式实际都有自己的"套路"(设计模式),就像如果用某种开发语言实现一个很直接简单的功能,如果使用GOF
设计很了很多个类,这些类之间是复杂的交互,在这个场景下这种设计未必合适。