2011-07-21 10 views
5

洗練されたUIロジックの実装のベストプラクティスを探しています。 Windows Formsアプリケーションで作業していますが、どのプラットフォームでもこの問題を解決するための一般的なパターンがあるはずです。洗練されたUIロジックをどのように実装しますか?

私は自分のフォーム上に多数のコントロールを持っています。リスト、ボタン、テーブル、ツリービューがあります。つまり、「コンテキスト」に応じて、コントロールのいくつかが有効になり、無効になっているものがあります。それらのうちのいくつかは、現時点でいくつかの機能を提供することができ、他の機能は提供しない。

現在、「そのまま」実装されています。私はイベントを処理し、変更をチェックし(新しいツリーノードを選択し、いくつかのノードを選択したなど)、いくつかのコントロールを無効にするか有効にする必要があるかどうかを決定します。フォームコードが複雑に見えるので、私はこのアプローチが本当に好きではありません。さらにロジックを追加する必要がある場合は、さらに複雑になります。私は本当に心配しています。私たちは非常に機敏で、新しい機能や多くの変更が日常的な基準であるからです。

この論理をすべて(機能)の部分に分けることは、各機能がその状態を確認する方法を知っているオブジェクトであり、この状態に応じて関連するコントロールを有効または無効にします。

新しいものを発明し、広く使われている良いアイデアを見つけようとしないでください。単一のUpdateUI()メソッドのアプローチをお勧めしないでください、私はそれが長期的には何も変わらないと信じています。

ありがとうございました。

答えて

6

このブログシリーズは、あなたが探しているものかもしれ:(材料の多くのように見えるが、ちょうどMichael Feathers great articleに基づいて「ハンブル]ダイアログボックス」、で始まる場合があります)

http://codebetter.com/jeremymiller/2007/07/26/the-build-your-own-cab-series-table-of-contents/

。これは、あなたのロジックのUIコードとの分離方法に関するもので、ほとんどの問題を解決する可能性があります。

+0

ありがとう、ちょうど私が必要とするようです! – agibalov

2

ビジネス・ロジックをバインドしてビジネス・オブジェクトにカプセル化する方法があります。 CSLA.NET framework by Rocky Lhotkaには、多数のサンプルアプリケーションだけでなく、多くの優れた機能が組み込まれています。私はそれを中規模のWPFプロジェクトと巨大なWinForms/CABアプリケーションで使用し、本当に楽しんでいます。

+0

ありがとう、見てみよう! – agibalov

関連する問題