Java面向对象 02根源篇:为什么面向对象会成为主流

Java面向对象 02根源篇:为什么面向对象会成为主流

反直觉的根源:不是它有多完美,是软件规模膨胀后的必然选择

小程序用面向过程又快又爽,系统大到一定程度后,流程化的复杂度会指数级爆炸;面向对象用封装、分层、抽象来管理复杂度,是软件规模增长后的必然演化结果

很多人觉得面向对象能成为主流,是因为它更先进、更优雅。实则任何编程范式的流行,都不是技术审美决定的,是软件规模倒逼的结果。

软件规模的增长,会带来复杂度的失控:

  • 小型程序,几百几千行代码,面向过程清晰直白,从头到尾顺着流程走,开发效率极高。

  • 中型系统,几万几十万行代码,函数越来越多,调用关系越来越乱,修改一处牵一发而动全身,维护成本指数级上升。

  • 大型系统,百万千万行代码,多人协作、多模块并行,必须有清晰的边界、稳定的抽象、可控的依赖,否则系统会快速腐坏。

面向对象的三大特性——封装、继承、多态,本质上都是管理复杂度的工具:封装划清边界,继承复用抽象,多态解耦实现。它没有让简单的事情更简单,但它让复杂的事情变得可控。

不是我们偏爱面向对象,是系统大到一定程度,我们别无选择。