2

たとえば、コントローラーとドメインモデル(つまり、リポジトリ、エンティティなど)の間の関係を行うサービスレイヤーがあります。

私のサービスでは、エンティティを「取得」するメソッドがgetArticlesありますが、配列の結果またはオブジェクトのコレクションを返す必要があります。

そこで、メソッドに引数を追加しましたgetArticles($array = false);(実際、私のサービスはオブジェクトをキャストしません。これはリポジトリによって行われますが、API にそのオプションを提供する必要があります)

私のサービスはますます大きくなっており、メソッドのパラメーターで定義するのが良い考えかどうか疑問に思っています。それは、サービスがステートレスであるべきだと思ったからだと思いましたが、そうならないかどうか疑問に思っています私のサービスsetUseArray($flag)がそれにプロキシするときに、基本的に私のリポジトリにそのフラグを実行してフィードするメソッドをサービスに用意することをお勧めします。

同じ考えで、サービスを使用してページ分割された結果を返す場合、各メソッドでページとアイテム数を設定する必要がありますか、それともサービスでグローバル メソッドを使用する必要がありますか?

フィードバックはありますか?

4

1 に答える 1

1

いつものように、それは異なります。ほとんどの場合、サービスオブジェクトが同時に使用されるかどうかによって異なります。一般に、パラメーターを使用してすべてを渡す方が柔軟なようです。メソッドパラメータをrequestエンティティにラップすると、クライアント側のメソッドシグネチャへの緊密な結合が回避されます。

class request { 
    bool getArrayInsteadOfCollection;
    int pageNumber;
    int itemsPerPage;
}        

Webアプリケーションがあり、サービスオブジェクトはリクエストコンテキスト内にのみ存在すると思います。その場合、「反復」パラメータをサービスオブジェクトごとに作成することを安全に選択できます。悪くないように見えます-

getArticles(filterParam) {
    //combine function and service-object-level parameters.
    repository.load(fitler = filterParam, itemsPerPage = this.itemsPerPage...)
}

私の意見では、柔軟性と副作用の最小化のために、パラメーターを通過する方が望ましいと思います。

于 2011-11-23T08:48:09.963 に答える