私は実装しているフローチャートを持っていて、ユーザーの入力と処理結果に応じて4つまたは5つのパスがあります。当然、私はこの論理をWindowsのフォームですべて望むわけではありません。クラスのメソッドをフォームで呼び出すだけです。ビジネスロジッククラスでSystem.Windows.Formsを参照し、ダイアログとメッセージボックスを表示して、処理して結果を返すために必要な入力を得ることは悪い設計ですか?ビジネスロジックオブジェクトで入力を求めるプロンプトが表示されるのは悪い設計ですか?
答えて
はい、これは悪いデザインです。あなたのクラスはフォームと通信してデータを取り戻す手段を提供する必要があります。イベントを作成してForm
に登録し、カスタムEventArgs
クラスからダイアログを作成するための情報を取得するだけです。それが入力を取得した後、同じクラスを2番目のイベントを介して追加情報とともに押し戻すだけです。
これはMVPパターンに似ています。
はい、これは悪い考えです。事実上、ビジネスロジックをプレゼンテーションと密接に結びつけています。他の状況ではビジネスロジックを簡単に再利用できるため、ビジネスロジックに触れることなくUIを置き換えることはできません。
UIレイヤとビジネスロジックレイヤが通信し、UIレイヤがUIを処理できるようにする必要があります。
悪いデザインだと思います。アプリケーションのコンポーネントを分離する場合、経験則は、それらを別々のコンピュータで実行できるように十分に分離しておくことです。
はい。なぜなら、あなたのビジネスシーンのオブジェクトは単にビジネスオブジェクトではないからです。
MVVMパターンを使用し、ロジックをviewmodelに入れます。
私はMVCがWinFormsの方が適切だろうと思っていますが、正確なパターンは十分に検証されたパターンを使用するよりも重要です。 –
イベントベースのMVPパターンもオプションだと思います。ビューはイベントを起動し、プレゼンターは魔法のような神秘的な方法でそれらを処理します。 – nick
UIやUIがまったくない状況(ビジネスプロセスやバッチプロセスなど)でビジネスロジックを実行する必要がある可能性があるため、設計が間違っています。それがビジネスロジックとUIの分離です。可能であれば、必要なユーザー入力をすべてUIクラスで手に入れてから、ビジネスロジックに渡す方がよいでしょう。ただし、ビジネスロジックのプロンプトで詳細を確認する必要がある場合は、ビジネスロジックAPIがコールバックメソッドデリゲートを受け取り、それを呼び出してさらに入力を要求する方がよいでしょう。次に、UI層は、ユーザからどのように要求するのが最適かを決定することができる。
- 1. ライブ接続では常に同意を求めるプロンプトが表示されるのはなぜですか?
- 2. 不正な入力の後に入力プロンプトが表示されない
- 3. WINDOWS CMD:プロンプトでphp-vを入力するときにエラーが表示されるのはなぜですか?
- 4. UIpopoverでプロンプトが表示されるナビゲーションバー
- 5. RADはワークスペースを求めるプロンプトを表示しません
- 6. Windows認証でユーザー名とパスワードの入力を求めるメッセージが表示される
- 7. elisp関数を呼び出して入力を求めるプロンプトにする
- 8. 計算のための入力ではなく、計算されたデータをdbに保存するのは悪い習慣ですか? (レール)
- 9. capistranoとのログイン時にユーザ名/パスワードの入力を求めるメッセージが表示される
- 10. この悪いデータベース設計ですか?
- 11. JTableでユーザー入力が表示されないのはなぜですか?
- 12. Jquery入力マスクが正規表現で表示されない
- 13. 入力ボックスの後にラベルが表示されるのはなぜですか?
- 14. UINavigationBarのPixelheightがプロンプトで表示される
- 15. キーボードがテキストボックスに入力するために表示されない
- 16. jqueryuiオートコンプリートで同じ入力のドロップダウンが表示されない
- 17. htmlの入力をクリックするとヒントが表示される
- 18. 移入されたフォームフィールドを呼び出すときにMS Accessからパラメータの入力を求めるメッセージが表示される
- 19. Pythonでは、以前のユーザー入力に基づいてユーザー入力を求める方法は何ですか?
- 20. まだインストールされていない場合、Flash Playerをインストールするように求めるプロンプトが表示されますか?
- 21. データベース設計:FKはNULLです - 良いか悪いですか?
- 22. 表示:ページ上の動的な選択と入力には表示されません...これは良いか悪い考えですか?
- 23. ドロップダウンで入力ボックスが表示される
- 24. CentOSでプロンプトが表示されないsudo
- 25. 入力位置がiPhoneで正しく表示されない
- 26. WPFでテキスト入力パネルが表示されないポップアップ
- 27. iPhoneで入力中にキーボード画面が表示されない
- 28. 入力タイプ= "番号"スピナーがブートストラップで表示されない1.4
- 29. 入力がインラインで表示されない
- 30. 入力された文字が表示されているScalaのキーボード入力を読み取る
MVPパターン私は信じていませんか? – nick
これは私の最初のやり方でした。私はちょうどそれを検証するために誰かを探していたと思います。ありがとう。 – Keith
はい、これは真実であるはずです。しかし、私はその例がより適していると思う、私はそれを言及すべきだった。 – Femaref