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);
    ...... 
}

または、2 番目のオプションは、コントローラーで次のように実行することです。

IDecorator decorator = GetDecorator(data);

メソッドを呼び出して、

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

では、作成されたメソッドに DataSet またはデコレーターをパラメーターとして渡す方が良いでしょうか?

4

2 に答える 2

0

2 番目のオプションは、より一般的でテストしやすいようです。クラスの実装は具体的なdata表現から分離されます。つまり、他のものに簡単に置き換えることができ、コントラクトのみに依存するため、コントラクトDataSetを変更する必要はありません。LockTransDetail()IDecorator

于 2013-03-21T09:51:32.660 に答える
0

私はあなたの質問を完全に理解しているとは言えませんが、理解できた場合、コントローラーがマネージャーで 1 つのモノリシック メソッドを呼び出す方がよいか ( Manager.DoSomething)、それとも複数のステップに分割するか ( Manager.ConvertData、、Manager.GetDecoratorおよびその後Manager.DoSomethingWithDecorator)。

これは、これらの手順が何であるかによって異なります。あなたが持ってきた例では、おそらく最初のオプションを選択します。コントローラの役割は、ワークフローを調整することです。コントローラは、現在の操作をRequestManagerの責任に移す必要があることを認識しています。してはいけないことは、RequestManagerの作業を行うことです。DataSet を標準のデータ転送オブジェクトとして使用する場合は、それを Manager に渡す必要があります。それ以降の処理は Manager で行う必要があります。

于 2013-03-21T09:55:01.907 に答える