我又来了...面向对象编程思想究竟是什么?

2020-12-17 19:44:12 +08:00
 chaleaoch

下图中的 self.pushlisher 为啥要作为参数穿进去, 直接用不好么?

提前感谢大佬.

3113 次点击
所在节点    程序员
23 条回复
taowen
2020-12-18 11:28:35 +08:00
面向对象的目的是为了依赖倒置,依赖倒置就是 a 做为底层模块,被 b 和 c 所依赖。这样做的好处是 b 和 c 中的实现细节,a 是完全引用不到的。这样就可以避免写 a 的时候做过多的假设,导致代码纠缠在了一起。b 和 c 之间没有直接引用关系,b 的作者就可以不用知道 c 的作者在搞什么幺蛾子。这样大家的知识边界就清楚了。

面向对象实际上是利用运行时组装来实现依赖倒置。如果你有编译期组装的方案,也可以实现同样的依赖倒置的效果,不一定需要运行时组装。
raaaaaar
2020-12-18 12:37:10 +08:00
我的理解是封装,信息的隐蔽。

如果代码都是一些函数,每个函数做了什么事,这种方法效率并不是很高,为了模块化封装,最好是抽象出一个数据结构,然后对这个数据结构进行操作,对外就暴露这个数据结构和这些方法。

这就有点像面向过程和面向对象的思想,但是最终,其实还是那个思想,封装。
YUyu101
2020-12-18 15:17:40 +08:00
传不传参这个区别只是作者希望这函数纯不纯的问题吧,面向对象只是把函数和数据结构聚合在一起,把 eat(human,apple) 变成 human.eat(apple) ,原来的 eat 是纯函数随便用,现在默认隐含了 human 的属性,顺便也要给 human 这个数据结构加上一个类指针,让他随时可以找到自己名下有哪些方法可以用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/736519

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX