4

古いレガシー プレゼンテーション ライブラリが何年にもわたって維持されており、性急な修正のプロセスと適切なアーキテクチャ上の監視の欠如によって、ますます多くのビジネス ロジックがコード化されているという架空の状況を考えてみてください。あるいは、アセンブリの境界によってプレゼンテーションから分離されていないビジネス クラスまたは名前空間を考えてみてください。したがって、参照を強制的に追加することなく System.Windows.Forms のようなものを参照できます (単純な using 句よりもはるかに冷静なアクションです)。 .

このような状況では、この UI コードで使用されるビジネス コードが最終的に再利用のために呼び出されることは想像に難くありません。これを可能にするために2つのレイヤーをリファクタリングする良い方法は何ですか?

私は設計パターンに大まかに精通しています - とにかく少なくとも原則として。しかし、私は実務経験が豊富ではないので、直感に自信がありません。私はこれに Strategy パターンを使用する道を歩み始めました。アイデアは、ビジネス ロジックが UI コンポーネントを呼び出してユーザーに質問し、データを収集する場所を特定し、それらを一連のインターフェイスにカプセル化することです。そのインターフェイスの各メソッドには、元のワークフローの UI 指向のコードが含まれ、UI クラスはそのインターフェイスを実装します。

問題のビジネス ロジックを再利用する新しいコードもこのインターフェイスを実装しますが、UI コンポーネントによって最初に回答された質問に対する新しいウィンドウ、または場合によってはプレハブまたはパラメーター化された回答のいずれかを置き換えます。このようにして、いくつかのメソッドに渡されたやや厄介なインターフェイス パラメーターを使用しても、biz ロジックを実際のライブラリとして扱うことができます。

これはまともなアプローチですか?これについてどうすればよいですか?私はあなたの集合的なインターネットの知恵に従います。

ありがとう!

4

4 に答える 4

3

Model–View–Controller-MVCは、問題の解決策として成功する可能性が高いことを謙虚に提案します。あなたが説明するように、それはさまざまなロジックを分離します。

代替テキスト

HTH

于 2010-08-13T20:06:10.643 に答える
2

設計の具体的な要素間の依存関係を壊して、代わりに抽象化 (インターフェース) に依存するという良いアプローチを取っているようです。このように依存関係を壊したら、すぐに単体テストの使用を開始して、レガシー コード ベースをカバーし、保証を改善して設計を進化させる必要があります。

このような状況では、「レガシー コードを効果的に使用する」という本が非常に貴重であることがわかりました。また、 SOLID原則などのオブジェクト指向設計の原則を最初に確認せずに、パターンに飛び込まないでください。多くの場合、システムの進化に関するパターンの選択と決定を導きます。

于 2010-08-13T20:11:33.310 に答える
1

エンティティと、エンティティが実行できる、またはエンティティに対して実行できるアクションを明確に識別することでアプローチします。次に、UI からロジックをリファクタリングし、BL オブジェクトへの UI 呼び出しを行うために、独立したビジネス ロジック オブジェクトの作成を 1 つずつ開始しようとします。

その時点で、あなたのシナリオを正しく理解していれば、BL オブジェクトでいっぱいになり、その一部が win フォーム呼び出しを行い、win フォーム呼び出しを UI レイヤーに昇格させる必要があります。

次に、JustBoo が言うように、BL と UI からコントローラーを抽象化し、MVC デザインですべて機能させるのに十分な状況が得られると思います。

于 2010-08-13T20:11:55.307 に答える
0

Okay, given your various comments, I would take Mr. Hoffa's advice and extend it. I'm sure you've heard hard problems should be broken down into ever smaller units of work until they can be "conquered."

Using that technique, coupled with the methodologies of Refactoring could solve your problems. There is a book and lots of information on the web about it. You now have a link. That page has a ton of links to information.

One more link from the author of the book.

So, you refactor, slowly but surely to the creamy goodness of MVC, step-by-step.

HTH

于 2010-08-13T22:48:36.027 に答える