C# 如何避免GUI控件和域对象之间的并行继承层次结构
我正在用C#开发一个Windows窗体应用程序。我使用的是MVP设计模式。在GUI中,用户可以操作打印机对象,并且需要有向用户表示打印机对象的自定义控件 有一个表示打印机的类层次结构。在底层有一个抽象的打印机类。然后是一个抽象的InkJetPrinter类和一个抽象的LaserPrinter类,每个类都继承自Printer。具体类表示不同品牌和型号的打印机,并从InkJetPrinter或LaserPrinter继承 GUI中表示打印机的每个UserControl类都需要具有特定于打印机类型的特性和功能。例如,喷墨打印机可能有一个显示墨水量的显示器,某种型号的激光打印机可能有特殊功能,可以通过控件上的附加按钮访问,等等C# 如何避免GUI控件和域对象之间的并行继承层次结构,c#,user-interface,inheritance,mvp,C#,User Interface,Inheritance,Mvp,我正在用C#开发一个Windows窗体应用程序。我使用的是MVP设计模式。在GUI中,用户可以操作打印机对象,并且需要有向用户表示打印机对象的自定义控件 有一个表示打印机的类层次结构。在底层有一个抽象的打印机类。然后是一个抽象的InkJetPrinter类和一个抽象的LaserPrinter类,每个类都继承自Printer。具体类表示不同品牌和型号的打印机,并从InkJetPrinter或LaserPrinter继承 GUI中表示打印机的每个UserControl类都需要具有特定于打印机类型的特
我看不到比将UserControl类的继承层次结构与Printer类的继承层次结构并行更好的处理方法。有更好的方法吗?在这种设计中,您可能需要LaserPrinterControl和InkJetInterControl,但它们不需要从PrinterControl派生出来。例如,您可以同时为两者提供一个“PrinterControl”子控件
缺点是多了一点粘合代码,但优点是您可以完全控制PrinterControl的行为 我不认为这是一个经典的并行继承层次结构?如果是的话,那么我认为需要编写一个GUI控制类,以使非GUI打印机类能够充分发挥功能。事实并非如此,因为可以只使用打印机类而不使用附带的UserControl类来编写功能齐全的非GUI应用程序 谢谢。这就是我最终可能真的这么做的原因。