事件重复

时间:2013-02-17 10:16:31

标签: robotlegs

在我的Robotlegs应用程序中,服务结果通常必须保留在模型中。这将创建具有相同有效负载类型的事件对:

  1. 将数据从服务传送到命令,
  2. 将数据从模型传递到中介
  3. 我想知道如何命名这些事件。想象一下,我有一项服务:

    FooService.getProducts()
    

    然后我有一个模特:

    BarModel.setProducts()
    BarModel.getProducts()
    

    在检索产品系列后,服务调度的事件命名的最佳方式是什么?

    在调用BarModel.setProducts()后命名由模型分派的事件的最佳方式是什么?

    或许我应该使用两种不同类型的单一事件:

    public class ProductEvent extends Event
    {
        public const SERVICE_PRODUCT_CHANGE:String = 'serviceProductChange';
        public const MODEL_PRODUCT_CHANGE:String = 'modelProductChange';
        ...
    

2 个答案:

答案 0 :(得分:0)

使用服务我喜欢指示成功或失败的事件/信号,因为服务经常与外部资源接触,这些资源由于各种原因而容易出现故障。

MyServiceLoadSuccessMyServiceLoadFailure

即使您的服务悄然失败,我认为成功的想法对服务也有意义。

对于模型,他们倾向于需要知道如何转换数据,但他们也可能会失败,但实际上他们正在制定决策,然后为视图或其他模型准备数据,并且通常只是发送更新。

MyModelUpdate

显然,您的具体情况对您选择的语义很重要,但这是一种我认为有用并且通常适用于各种情况的模式。

答案 1 :(得分:0)

我已经制定了自己的命名方案来回答我的问题。

首先,大多数情况下,事件用于在actor之间传播数据:

  • 服务>模型
  • 模型>介体
  • mediator>模型

其次,不同的事件携带不同的数据类型。 第三,相同的数据通常必须传递两次:服务> &model;介体。

基于此,我决定将此事件命名为:

<class>Event_<payload>

其中class是调度事件的类的名称,payload是更改的公共属性的名称。例如:

  • ProductServiceEvent_products
  • ProductModelEvent_products
  • ProductViewEvent_products

每个事件只有一个名为CHANGE的类型。