1

デザインの質問があります。一部の属性を共有し、GUI (Windows フォーム) とバックエンドの両方の点で他のコンポーネントが異なる複数のコンポーネントがあるアプリケーションを作成する場合、理論的にはどのようにアプローチしますか?

たとえば、4 種類の製品があるアプリケーションがあります。製品の詳細を入力するフォームはすべて、3 つの異なるフィールドを共有しています。ここまでは簡単です。基本クラスを作成し、この基本クラスから 4 つのフォームを派生させます。ただし、2 つの製品が特定の動作を共有しているとします。これは両方で同じです。もちろん、メソッドを定義するインターフェースを用意して、この 2 つの製品入力フォームにこのインターフェースを実装させることもできますが、インターフェースにはデフォルトの実装がないため、それを行うのはもったいないのではないでしょうか。各クラスに実装を提供する必要があるため、まったく同じ場合はコードの繰り返しになります。

もちろん、このメソッドを基本クラスに配置して、そこから 2 つのフォームを派生させることもできます。私のフォームが複数の共通要素を共有し、他の要素を共有していない場合、髪の毛を引き裂くことなくこれを表現するための最も健全で論理的な方法は何でしょうか?

4

3 に答える 3

2

無関係な2つのクラスを基本クラスから直接派生させてから、共通の機能を備えた新しいクラスを作成し、基本クラスから派生させて、残りの2つのクラスをその新しいクラスから継承させてはどうでしょうか。

BaseClass
CommonClass : BaseClass
ClassA : BaseClass
ClassB : BaseClass
ClassC : CommonClass
ClassD : CommonClass
于 2009-05-21T22:08:14.390 に答える
0

2 つのクラスに共通の動作を取得する 1 つの方法は、その動作を継承するのではなく、2 つのクラスにその動作をメンバーとして含めることです。フォームの場合、これは「ユーザー コントロール」(つまり、共通コントロールの再利用可能なコレクション) を定義することを意味する場合があります。

于 2009-05-21T21:34:01.777 に答える
0

特定のレイアウトがないとわかりにくい。一般に、再利用の他のより柔軟な形式は、継承ではなく構成を行うことです。実際、コントロール階層は、構成がいかに強力であるかを示しています。おそらく、UI の一部をカスタム コントロールに分離して、目的の特定の製品レイアウトに基づいて組み立てることができます。

于 2009-05-21T21:35:22.630 に答える