oop - Actor 模型与面向对象模型

标签 oop akka actor-model

我在网上搜索了很长时间,没有找到Actor模型克服的面向对象模型的具体缺点。请帮我提供一些指示和解释。

提前致谢。

最佳答案

面向对象编程一词最初来自 Alan Kay 和 Smalltalk。
它强调消息传递是其主要功能。这就是 OOP 最初的意思。
一旦 C++ 和 Java 出现,面向对象编程这个术语就具有了稍微不同的含义。它演变成某些人所说的“面向类的编程”。
Actor 模型再次强调消息传递的原始 OOP 概念是核心基础。
Actor 模特优点:

  • 在分布式系统中效果更好
  • 在许多情况下,在架构上更易于理解
  • 模拟现实世界现象/具有多个“参与者”的复杂系统
  • 很大程度上兼容函数式编程风格(参见 Smalltalk)

  • Actor 模型缺点:
  • 很难对算法进行推理,因为它不仅仅存在于一个地方。它被分成不同的 Actor /文件,你必须追赶它并遵循代码。
  • 同样,多个算法可以在多个参与者之间混合使用。因此,您可能会转到一个文件并阅读 Actor 的代码以遵循算法,但会感到困惑,因为其他算法也混合到同一个 Actor 中。
  • 传统的信号量式锁定是不可能的。必须使用可能更复杂的 STM 风格。
  • 更难获得“返回值”。 Actor 模型是“即发即忘”。您必须弄清楚如何将“返回值”返回给原始请求者。这会增加很多开销,因为现在您必须设置一种方法来接收它并通过整个系统传递上下文(uniqueId/taskId)。您还需要管理状态以保存该信息,直到“响应”回来。如果没有 actor 模型,它们将只是块作用域中的局部变量。
  • 关于oop - Actor 模型与面向对象模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41215734/

    相关文章:

    javascript - React Native 中全局对象的模式

    erlang - 角色模型和碰撞检测

    c# - 在 C# 中返回状态代码或复杂对象的理想方法是什么?

    java - Akka/Java getContext().become 带参数?

    scala - Akka Actor pubsub : subscribe using multiple parameters in one EventStream?

    android - Android下如何使用Akka项目

    Actor 模型中消息传递的性能

    C++ - 如何调用创建者类/对象

    java - Java 中的泛型是什么?