0

我正在创建一个方法,实现到将要从控制器 ReqController 调用的管理器(如 ReqManager)中,

定义可以是:

public void LockTransDetail(IRow detailRow, DataSet data, string fieldName, bool lockYN)

public void LockTransDetail(IRow detailRow, IDecorator decorator, string fieldName, bool lockYN)

所以我可以执行第一个,然后执行,

public void LockTransDetail(IRow detailRow, DataSet data, string fieldName, bool lockYN)
{
    IDecorator decorator = GetDecorator(data);
    ...... 
}

或者第二个选项是,进入控制器做:

IDecorator decorator = GetDecorator(data);

然后调用该方法,

ReqControllerInstance.LockTransDetail(detailRow, decorator, fieldName, lockYN)

那么将 DataSet 或 de 装饰器作为参数传递给 created 方法,有什么更好的方法呢?

4

2 回答 2

0

第二个选项似乎更通用且可测试:您的类实现将与具体data表示分离,这意味着您将能够轻松地DataSet用其他任何东西替换并且不必更改LockTransDetail()合同,因为它仅取决于IDecorator

于 2013-03-21T09:51:32.660 回答
0

我不完全确定我理解了你的问题,但如果我理解了,你会问控制器是否更好地在管理器上调用一个单一方法(Manager.DoSomething),或者是否将其分解为几个步骤(Manager.ConvertData、、Manager.GetDecorator和然后Manager.DoSomethingWithDecorator)。

这将取决于这些步骤是什么。在您带来的示例中,我可能会选择第一个选项。Controller 的作用是编排工作流——它知道当前的操作需要转移到RequestManager's 的职责中。它不应该做的是RequestManager为它做的工作。如果您使用 DataSets 是您的标准数据传输对象,那么这就是您应该传递给 Manager 的内容。任何进一步的处理都应在 Manager 中完成。

于 2013-03-21T09:55:01.907 回答