函数指针对面向对象编程的含义



在他的演讲"编程的未来"中,Robert Martin提到了结构化,函数式和面向对象范式的动机:

  • 结构化编程:不要使用无拘无束的goto;
  • 函数式编程:不要使用赋值;
  • 面向对象编程:不要使用指向函数的指针。

但是他提到的OOP背后的动机让我感到困惑。为什么 C# 作为一种面向对象的语言,有委托(据我理解是函数指针(?

如果 OOP 本质上就是避免指向函数的指针,那么它们有什么问题呢?

我认为这是对面向对象的错误陈述,可能只是为了戏剧效果。

面向对象的最大实现是:

    隐藏数据
  • ,提供功能(封装、数据隐藏(
  • 告诉,不要问(消息传递(
  • 内聚力强,耦合性弱
  • 等。

这些都没有特别禁止指向技术上功能的指针。他的意思是,OO中不应该有"静态"函数,所以显然不需要指向"静态"函数的指针。这对我来说听起来很牵强...

总结:我不知道,但听起来不对。