最近、私はn層アーキテクチャでチェーンの上位の通信を処理するための最良の方法について議論しています。
現在私が行っている方法は、エラーのレイヤー間で例外をスローして処理し、他の通信にイベント/デリゲートを使用することです(プログレスバーなどを更新するため)。これらは最良の方法ですか、それとも私が見落としていた、より良い実践と見なされる別の方法がありますか?
最近、私はn層アーキテクチャでチェーンの上位の通信を処理するための最良の方法について議論しています。
現在私が行っている方法は、エラーのレイヤー間で例外をスローして処理し、他の通信にイベント/デリゲートを使用することです(プログレスバーなどを更新するため)。これらは最良の方法ですか、それとも私が見落としていた、より良い実践と見なされる別の方法がありますか?
例外処理が行われている限り、あなたは正しい方向に進んでいると思います。つまり、ChainofResponsibilityパターンの実装です。例外をチェーンの上位にスローすることは常に良いことです。もう1つ(イベント/デリゲート)については、あなたの発言がよくわからなかったので、コメントできませんでした。
例外は確かに、下位層からのエラーを処理するための良い方法です。
私の考えでは、デリゲートは、別のオブジェクトを所有する1つのオブジェクトがそのオブジェクトをカスタマイズする必要がある場合に最も役立ちます。あなたの層が下位層のオブジェクトを論理的に「所有」している場合、それは理にかなっているかもしれません。そうでなければ、私はおそらくデリゲートパターンを避けてイベントを使用するでしょう。
アダプタパターンを使おうとしました。メインオブジェクトはロジックレイヤーにあり、プレゼンテーションレイヤーとデータアクセスレイヤーが機能するように、複合オブジェクトを使用してラップされます。ほとんどのプレゼンテーションおよびデータアクセス層クラスはインターフェイスを使用します。ラッパー(複合)オブジェクトは、プレゼンテーション層とデータアクセス層にあり、これらの層のインターフェイスを実装します。
複合オブジェクトに加えて、ロジックオブジェクトからデータをプルして新しいオブジェクト(つまり、文字列のリスト)を作成できるコントローラーオブジェクトがあります。