2017-01-23 60 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()具有相同的行为。