0

C#の複製サブクラスプロパティへのアクセス-そこにある追加のソリューションアプローチを参照してください。

各オブジェクトに親があるオブジェクトモデルがあり、各オブジェクトの特定のタイプで親プロパティにアクセスしたいと思います。したがって、たとえばWheelはタイプCarの親プロパティを持つ必要があります。私の推測では、これを実現するための確立されたデザインパターンがあります(.NETで)。でも、見つけられなかったので、思いついたデザインはこんな感じ。

public class BaseObject<T> where T : BaseObject<T>
{
    private T mParent;
    protected T Parent
    {
        get { return mParent; }
    }

    public BaseObject(T parent)
    {
        mParent = parent;
    }

    public void Save() ...
    public void Delete() ...
    public BaseObject<T> Clone() ...
}

public class Car : BaseObject<Car>
{
    public Car(Car parent) : base(parent)
    {
    }

    public bool Is4WD()
    {
        return true;
    }
}

public class Wheel : BaseObject<Car>
{
    public Wheel(Car parent) : base(parent)
    {
    }

    public float RequiredTirePressure()
    {
        return Parent.Is4WD() ? 3.0f : 2.5f;
    }
}

このアプローチには、設計やパフォーマンスの欠点がありますか?より良いデザインをお勧めできますか?

4

1 に答える 1

3

答えは、継承の代わりに構成を使用することです。ホイールは車ではないため、 から延長することはできませんCar。代わりに、そのコンストラクターにWheeltake aを含めます。Car

例えば:

public class Wheel {
    private Car car;

    public Wheel(Car car) {
        this.car = car;
    }

    public float RequiredTirePressure() {
        return car.Is4WD() ? 3.0f : 2.5f;
    }
}
于 2012-05-30T09:06:20.907 に答える