2017-01-23 1 views
0

は、私は次のクラスにコピーし、別のクラスの1クラスの動作

class A : Canvas 
{ 
    protected override void OnMouseDown(MouseButtonEventArgs e) 
    { 
     //the behaviour 
    } 
} 

、重複コードなしで同じ動作を実現するためにどのようにプロパティとして最初

class B : Canvas 
{ 
    private readonly A _a; 

    protected override void OnMouseDown(MouseButtonEventArgs e) 
    { 
     //the same behaviour 
    } 
} 

が含まれている別のクラスを持っていると仮定?私はbase.OnMouseDown()を使用している場合は、私は理にかなってキャンバスの振る舞いを得るが、私はここに

答えて

1

Decoratorパターンを実装していますように私は、装飾されたクラスの動作を必要とするCanvasを継承し、いくつかの基本クラスを作成し、継承それはABによって:

class CommonClass : Canvas 
{ 
    protected override void OnMouseDown(MouseButtonEventArgs e) 
    { 
     //some behavior 
    } 

    //other common implementation for derived classes 
} 

class A : CommonClass 
{ 
    // implementation specific to "A" and overrides 
} 

class B : CommonClass 
{ 
    // implementation specific to "B" and overrides 
} 

その結果、あなたはABで同じ動作を持つ1と同様の方法OnMouseDown()を取得します。

関連する問題