web-dev-qa-db-ja.com

ロジックからUIを適切に分離してコンソールアプリケーションを設計する方法

  1. コンソールアプリケーションをMVC、MVP、またはN層アーキテクチャーのように設計することは、やり過ぎと見なされますか?そうでない場合はどちらがより一般的であり、簡単な例に私をリンクできるかどうか。

  2. 三目並べゲームをコンソールアプリケーションに実装したい。
    ビューロジックを表すTicTacToeBusinessLogic (Class library project)TicTacToeConsoleApplication (Console application project)の2つのプロジェクトを保持するソリューションがあります。 TicTacToeConsoleApplicationProgram.csメインエントリポイントを保持するクラス(public static void Main)。
    今、私は問題に直面しています。
    ゲームで独自のゲームフローを処理して、次のことができるようにしたい:新しいGameManagerクラスを作成する(from BL)しかし、これにより、ビューはBL部分を直接認識します。

だから私はそれを許容できる方法で書く方法を少し混乱しています。デリゲートを使用する必要がありますか?簡単な例を見せてください。

1
JavaSa

少なくとも、キーボードなどのイベントをリッスンする1つのレイヤーがあり、それらをゲームロジックレイヤーへの呼び出しに変換し、それらの呼び出しがゲームの状態を変更すると更新される(オブザーバー)ものを使用します。

さらに数ステップ進んで、MVC、MVP、またはMVVMテリトリーに戻ったことを推測します。

これらのパターンのいずれかを使用するかどうかは、UIのタイプとは関係がなく、懸念事項の分離、疎結合、および保守性とはすべて関係があります。

2
Marjan Venema

MVCなどを使用するかどうかの選択は、UIの種類ではなく、アプリケーションのサイズに関する私の意見に依存します。

複雑さとサイズが大きいほど、デザインパターンを使用して、構造化された方法で作業する必要があります。もちろん、使用される方法は利点よりも多くのオーバーヘッドを与えるべきではありません。ただし、thadコードはサイズと複雑さが非常に急速に大きくなる傾向があることに注意してください。

1
Painted Black