0

現在、幼稚園、小学校、高校向けにカスタマイズされたC#「スクールシステムプロジェクト」に取り組んでいます。この目的のために、カスタマイズされた機能を備えた文字通り類似したクラスを持つ 3 つの異なるプロジェクトを作成しました。

問題は、(主にバグや新機能のために) クラスを変更するたびに、3 つのプロジェクトで同様のクラスを更新する必要があることです。

今、私は自分のデザインパターンがこれよりも優れているはずだったことを知りました。カスタマイズされた機能を持つ同様のクラスを共有する私のタイプのプロジェクトの業界標準は何ですか? すべてが使用できるライブラリ クラスの作成を検討する必要がありますか?それともより良いオプションがありますか?

4

5 に答える 5

1

ライブラリを作成し、共通のプロパティと関数を持つ基本クラス School を定義します。

public abstract class School
{
    public string Name { get; set; } // common property for each school

    public int GetStudentCount() // common method for each school
    {
    }
}

次に、各学校の子供のクラスを定義し、他の学校にはない行動を指定します。

public class Elementary : School
{
    public string SomethingSpecial { get; set; }
}

オーバーライドする必要がある、またはオーバーライドできる基本的な動作を定義するために、抽象メソッドと仮想メソッドおよびプロパティを使用することもできます。

このようにして、ドメイン オブジェクト (学校、生徒、教師など、使用するすべてのエンティティ) とその動作を定義するライブラリが 1 つだけになります。何かを変更する必要があるときはいつでも、この 1 つのライブラリを操作するだけです。

また、Visitor メソッドや Factory メソッドなどのいくつかの設計パターンを確認できるため、新しいアーキテクチャ設計が明確になります。

于 2013-08-28T08:34:20.777 に答える
0

抽象的な運命のパターンを調べます。

ここでその例を見ることができます。

于 2013-08-28T08:40:02.220 に答える
0

特定のクラスが3つのプロジェクト間で共通であり、これら3つのプロジェクトすべてで個別に使用していると言っているためです。これらの共通クラスに変更を加える場合は、これら 3 つのプロジェクトすべてを変更する必要があります。

確かに、設計原則 (OO 原則) に従う必要があります。

「変化するものをカプセル化する」

これら 3 つのプロジェクト以外の共通クラスをすべて抽出し、単一のクラスまたはユーティリティ プロジェクトのように複数のクラスがある場合は単一のプロジェクトに保持します。次に、そのユーティリティ プロジェクトを 3 つのプロジェクトすべてで共有します。

共通クラスに新しい機能が追加されたり、バグが修正されたりするたびに。その一箇所の変更。

于 2013-08-29T15:31:45.893 に答える