【问题标题】:Explain "Active-object" pattern解释“活动对象”模式
【发布时间】:2017-01-16 12:21:16
【问题描述】:

Active 对象模式的目标是什么? 你能给我看一些抽象的例子来容易理解吗?

【问题讨论】:

标签: design-patterns concurrency active-objects


【解决方案1】:

活动对象模式的目标是将方法调用与方法执行分开。这就像餐厅里的服务员,只是将顾客的订单交给厨师。

当顾客向服务员点菜时

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

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

纸是MethodRequest,纸上的表编号是Future对象

把纸交给厨师,由他决定由哪位厨师准备(谁有时间)。

厨师是Scheduler,他有一份文件列表(ActivationList),厨师是Servant-s

准备好饭菜后,厨师将其放在服务吧台上,服务员将其带到顾客餐桌上。

ClientResult 对象中读取方法的结果。

【讨论】:

  • 餐厅的比喻很好,但并不完美。我认为最好说客户将recipe交给服务员让厨师执行。换句话说,客户端提供代码(作为指向语言的函数、lambda 或闭包的指针)供服务方执行。
  • 代理和调度器也是点缀,不是必须的。这个想法的核心只是一个在与客户端线程不同的线程上执行的闭包队列。
  • @AndrewW.Phillips 客户端不提供执行代码,只提供请求和一些参数(“附加”)。没有提供有关如何执行的秘诀,即业务逻辑——这很关键。那将是注射。虽然它通常用于异步解耦,但最初更多的是关于域的分离。
  • @Zacharias 我认为活动对象(或命令模式)的全部意义在于客户端提供了代码。如果您愿意,可以调用该注入。
  • @AndrewW.Phillips 对不起,你错了。命令模式也不应该允许注入代码,而是提供要使用的参数。命令/活动对象由客户端请求,但由只知道执行代码的工厂提供。如果调用者提供了执行代码,则称为注入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多