優れたソフトウェアシステムの優れたアーキテクチャを作成する方法を学び、高レベルのコンポーネントをレイヤーに分離する方法を学んでいます。この場合、各レイヤーをブラックボックスとしてモデル化するために、ティアを使用しようとしています。
私のアーキテクチャには、プレゼンテーション、アプリケーションサービス、ビジネスロジック、ドメイン/永続性の4つの層があります。私の質問の目的のために、私たちは本当にプレゼンテーションとアプリケーションサービスに焦点を合わせる必要があるだけです。
アプリケーションサービスレイヤーには、特定のイベントの追跡を可能にするサービスが含まれます。プレゼンテーションには、イベントの追跡モデルが変更されると動的に更新されるいくつかのビューがあります。本質的に、私は一方向の変更伝播メカニズムが必要なようです。
これらのレイヤーをティアとしてモデル化しようとしているので、各ティアのファサードオブジェクト間の通信を制限し、必要に応じて、インターフェイスでのみ認識されているものの、ティアが1つ下のティアからオブジェクトを集約できるようにします。
私はこのアプリケーションをJavaでプログラミングしているので、使用するのはObservable/Observerです。ただし、Observerインターフェイスのupdateメソッドでオブジェクト引数をキャストする必要があるのは気に入らないです。このメカニズム用に独自のインターフェイスとクラスを定義することで、これを回避したいと思います。したがって、問題は、アプリケーションロジックがプレゼンテーション層のインターフェイスに依存することです。このアーキテクチャでは、特定のノーノーです。これは、MVCを最前線でモデリングし、モデルをレイヤー化する必要があるという兆候ですか?または、アプリケーションサービスレイヤーで知られているインターフェイスを使用して各ビューをモデル化することをお勧めします。それを置くのは悪い場所のようで、私は立ち往生しています。また、複数のビューを処理するためにビューハンドラーデザインパターンを使用しています。