在C#中,我有一个类层次结构,顶部有几个抽象基类和一些派生类。其中一些具体类具有一些共同的属性和方法,这些方法的实现完全相同。这让我感到浪费,因此一个解决方案可能是在另一个抽象基类中实现这种共同的行为。
那么如何在不使用基类的情况下跨类共享这样的实现呢?
我想象我想将接口的实现委托给另一个类,并让该类代表所需的类实现这些属性和方法,以便对用户而言,StatusBar和Window似乎支持标准接口,但在内部,它是由其他实现它的东西来实现的。
我可以想象聚合实现此行为的类,但这是否适当,有什么缺点?还有其他选择吗?
谢谢
abstract class Control;
abstract class SquareControl: Control
{
public int SquarishProperty;
public void SquarishMethod();
};
class Window: SquareControl;
class Button: SquareControl;
然而,如果继承层次结构中的其他几个类共享某些其他行为,但同时与另一个基类的控件共享某些相似之处怎么办?也许有很多共性。使用抽象基类实现来建模这种情况将变得不切实际,是吧?
abstract class FlashableControl: Control
{
public int FlashyProperty;
public void FlashMethod();
};
class StatusBar: FlashableControl; // but it's also a bit square too, hmm...
那么如何在不使用基类的情况下跨类共享这样的实现呢?
我想象我想将接口的实现委托给另一个类,并让该类代表所需的类实现这些属性和方法,以便对用户而言,StatusBar和Window似乎支持标准接口,但在内部,它是由其他实现它的东西来实现的。
我可以想象聚合实现此行为的类,但这是否适当,有什么缺点?还有其他选择吗?
谢谢