2017-01-23 59 views
0

假設我有以下類複製一個類到另一個類的行爲

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(),我得到畫布的行爲,這是有道理的,但我需要裝飾類的行爲,因爲我實現Decorator模式這裏

回答

1

創建一個繼承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一個相同的方法OnMouseDown()具有相同的行爲。

相關問題