理解面向对象编程(Object-Oriented)的本质

大部分软件编程的本质是为了解决现实世界的问题,如企业库存管理,财务管理,通讯软件等。

所以,软件编 程的本质是程序员用代码的方式使现实世界的事务运行在计算机上,计算机软件是为了解决世界的问题而开发的。

本质

那么软件编程这件事件应该关注的重点是客观世界的事物本身,而不是程序员的思维方式或计算机指令。

基于软件编程的重点是客观世界的事物本身这一问题的思考,面向对象的编程语言应运而生

面向对象编程以对象作为软件编程的基本单位,提出一切皆对象。客观世界的用户,账号,商品对象;创建、关联这些对象的工厂、适配器,观察者也是对象;将所有这些对象分析,设计,开发出来,一个软件系统的开发就完成了,这个软件系统灵活,强大,最重要的是可以根据需求变化快速更新维护。

多态常常使面向对象编程表现出视神奇的特性,而多态正是面向对象编程的本质所在。正是多态,使得面向对象编程与以往的编程方式有了巨大的不同。设计模式的精精髓就是对多态的灵活应用。

如果只是使用面向对象编程对言进行编程,其实并不能说明你掌握了面向对象编程。

只有灵活应用设计模式,使程序呈现多态的特性,进而使程序健状、灵活、清晰、易于维护和复用,这才是真正掌握了面向对象编程。

未来

面向对象编程似乎已经进化到编程在浙学意义上的终点,是编程语言的终极形态。现实看起来也确实如此,最近三十年诞生的编程语言几乎全部都是面向对象的编程语言,面向对象一统天下。

但现实中的面向对象编程几乎从未实现人们期望中的面向对象编程。以一个 Java 的 User 对象为例,经常是定义属性,而没有行为,现实中的 User 对象显然不是这样的。(个人理解:这些客观世界的事物所具有的行为能力不会随意随时发生,是受内部或外部条或因素影响触发,一个对象所具有的行为能力是极其繁杂的,不可能在一种环境中描述所有行为能力)。

也许有部分企业和部分程序员做到了真正的面向对象编程,但是绝大多数程序员没真正做到,面向对象普及了几十年了,如果大多数程序员依然做不到真正的面向对象编程,是程序员的问题还是编程语言的问题。

另一方面,一此新出现的面向对象编程语言对对象的态度似乎也有点 暧昧,对象的边界和封装开始模湖。例如 Go 语言。

– 摘要《架构师的自我修炼》

作者

光星

发布于

2022-06-18

更新于

2022-07-07

许可协议

评论