私は基本的に次のように動作するアプリケーション(のデザイン)があります。セインデザイン代替
クラスメインクラスビジネスロジック、クラスのUserInterface
ビジネスロジックとのUserInterfaceは、ライブラリのようになるように設計されている - ではありませんの開発中ですが、クラスMainの開発者が使用しています。
BusinessLogicのコンストラクタもUserInterfaceをインスタンス化します。これは、テキストベースのメニューを表示して端末入力を取得します。その入力に基づいて、それぞれのBusinessLogicオブジェクトの関連するメソッドを呼び出すことによって、関連する機能を実行します。
しかし、これは循環参照であり、UserInterfaceがそれぞれのBusinessLogicオブジェクトを呼び出すための明白な方法はありません(BusinessLogicオブジェクト識別子はハードコードされていませんが、さらに悪いことです)。
これは論理的な設計ですが、プログラミングの面で実装するのは難しいです。
代わりに、単にUIがBusinessLogicのコンストラクタに入力データを返すことを考慮していますが、BusinessLogicが入力分析を処理しないようにしたいと考えています。
アイデア?
「BusinessLogicオブジェクト識別子がハードコードされている」とは、UserInterfaceのフィールドとして「親」BusinessLogicを持つことを意味しますか? –