解释"活动对象"模式

Ben*_*ato 9 concurrency design-patterns active-objects

Active对象模式的目标是什么?你能告诉我任何抽象的例子来轻松理解它吗?

Ben*_*ato 15

patern的静态对象图

Active对象模式的目标是将方法调用与方法执行分开.它就像餐馆里的服务员,只是将客户的订单交给厨师.

当顾客从服务员那里订购一些食物时

客户是客户,服务员是代理

他把它写在纸上(显然不会开始做饭),

该论文是MethodRequest,论文中的表格编号是Future对象

把纸给了厨师,厨师决定哪个厨师应该准备它(谁有时间).

厨师是调度谁拥有的文件(名单ActivationList)和厨师都是仆人 -s

当饭菜准备好时,厨师将其放在服务栏上,服务员将其带到顾客桌上.

客户端Result对象中读取方法的结果.

  • 餐厅的比喻很好,但并不完美。我认为更好的说法是顾客将“菜谱”交给服务员,让厨师执行。换句话说,客户端提供代码(作为指向函数、lambda 或依赖于语言的闭包的指针)供仆人执行。 (2认同)
  • 另外代理和调度器只是点缀,不是必需的。这个想法的核心只是在与客户端不同的线程上执行的闭包队列。 (2认同)
  • @AndrewW.Phillips 客户端不提供执行代码,只提供请求,也许还有一些参数(“额外的”)。没有提供如何执行的秘诀,即业务逻辑——这一点至关重要。那就是注射。虽然它通常用于异步解耦,但它最初更多的是关于域的分离。 (2认同)
  • @AndrewW.Phillips 我很抱歉,但你错了。命令模式也不应该允许注入代码,您宁愿提供要使用的参数。命令/活动对象由客户端请求,但由工厂提供,工厂仅了解执行代码。如果调用者提供执行代码,则称为注入。 (2认同)