1

アプリケーション構造の「ベスト プラクティス」についていくつか質問があります。私はスキニー モデルを利用し、データベースのやり取りのほとんど (すべて) を行うサービス レイヤーを用意しています。モデルは、データベース トランザクションが必要なときにサービス レイヤーを呼び出します。

また、フォーム、モデル、およびサービス層クラスを返すことができるファクトリ クラスもあります。このファクトリ クラスは、非常に単純な DBAL として機能し、サービス レイヤーで使用される「検索」クラスも返す場合があります。

この検索クラスには、getAll() や getById() などのヘルパー メソッドがあります。

アプリケーションのどの部分が検索クラスにアクセスできるかについて、少し混乱しています。現在、私のモデルは静的ファクトリを使用して、ID でエンティティを取得する必要があるときに検索クラスを構築しています。代わりに、モデルがサービス層を呼び出してこの呼び出しを行う必要があるため、ファクトリ クラスを使用して検索を返す必要がなくなりますか?

アプリケーションの複数の部分からデータベースにアクセスできる可能性があるという考えは気に入らないと思いますが、実際にはすべてが最初にサービスレイヤーを通過する必要がある場合です。

ヒントとフィードバックは大歓迎です!

4

1 に答える 1

1

私はSearchService、アクセスしたいモデルまたは他のコードSearcherが相互作用する(インターフェース、つまりISearchServiceを実装する)クラスを作成することになります。

このようにSearcherして、将来変更される可能性のあるクラスまたはファクトリから明確に分離します。もう 1 つの利点は、すべての検索関連のコードを に配置することで、開発SearchService者がコードを理解しやすくなることです。これは、検索関連のコードがSearchServiceコードベースに散らばってファクトリ メソッドを呼び出すのではなく、にあることがわかっているためです。等

また、ISearchService を使用することで、依存性注入を使用するオプションを自分で使用できるようになります。これは、オブジェクトを初期化する良い方法であり、実装の変更について心配する必要はありません。

ただし、これは正しい/間違った方法ではなく、私の好みです。

于 2012-12-14T10:50:45.837 に答える