0

次のようなシナリオが発生するシステムを設計しています。実装によって動作が異なるメソッド f1() があります。すべての実装で動作が同じ f2() メソッドがあります。

私は次のように設計しました:

interface I1
{
        //Behaviour will vary across implementations 
        void f1();
        //Same behaviour for all implementations
        void f2();

 }

    abstract class C
    {
        //Implemented in the Base class
        void f2()
        {


        }
    }

    public class C1:C,I1
    {
        //Implemented interface method
        public f1()
        {

        }

    }
    public class C2:C,I1
    {
        //Implemented  interface method
        public f1()
        {

        }

    }

デザインは正しいですか?このシナリオで適切な設計を提案できる人はいますか?

4

3 に答える 3

3

次のように、メソッド f1() および f2() を持つ抽象クラスを 1 つだけ作成する必要があります。

abstract class A
{
    public abstract f1();
    protected void f2()
    {
    }
}

class B : A
{
    public override void f1()
    {
    }
}

A に基づいてクラスを作成するときはいつでも、メソッド f1() に対して独自の動作を指定できます。

于 2013-09-02T11:21:25.553 に答える