2013-02-17 81 views
1

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

  1. 从服务到命令携带的数据,
  2. 从模型携带数据中介

我不知道如何来命名这些事件。想象一下,我有一个服务:

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'; 
    ... 
+0

有没有原因你不使用信号? https://github.com/robertpenner/as3-signals – ThanksBro 2013-02-18 12:30:49

+0

同样的问题适用于信号,不是吗?如果我使用SignalMap,我必须扩展Signal类并创建FooServiceSignal和BarModelSignal? – hidarikani 2013-02-18 12:44:54

+1

对于信号,我会将其称为BarServiceProductChanged和BarModelProductChanged,或者与Signal后缀相同。在命名中,最重要的是要跟上你命名的东西,并且当你开始在团队中工作时,你会同意命名。例如,我曾经把信号后缀放在我所有的信号上,但是在Project项目中,他们不会在信号上使用后缀,而只在命令上使用,所以我一直在玩。只需在所有代码中保持相同的方式。 – ThanksBro 2013-02-18 14:59:00

回答

0

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

首先,最经常的活动是用来参与者之间传播数据:

  • 服务>模型
  • 模型>中介
  • 中介>模型

其次,不同的事件携带不同的数据类型。第三,相同的数据通常必须传递两次:service> model> mediator。

在此基础上,我决定命名我的事件是这样的:

<class>Event_<payload> 

哪里class是分派事件和​​类的名称是改变了公共财产的名称。例如:

  • ProductServiceEvent_products
  • ProductModelEvent_products
  • ProductViewEvent_products

每个事件具有仅一种类型的称为CHANGE

0

的服务,我喜欢事件/指示成功或失败的信号,因为服务往往使与容易失败外部资源接触出于各种原因。

MyServiceLoadSuccessMyServiceLoadFailure

即使你的服务悄然失败成功的想法是有道理的服务,我想。

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

MyModelUpdate

显然您的具体情况为您选择的语义重要的,但是这是我发现有益的,普遍适用于各种情况下的模式。