Я занимаюсь разработкой приложения Windows Forms на C #. Я использую шаблон проектирования MVP. В графическом интерфейсе пользователь может манипулировать объектами принтера, и должны быть пользовательские элементы управления, которые представляют объекты принтера пользователю.
Существует иерархия классов, которая представляет принтеры. В основе находится абстрактный класс Printer. Затем есть абстрактный класс InkJetPrinter и абстрактный класс LaserPrinter, каждый из которых наследуется от Printer. Конкретные классы представляют различные марки и модели принтеров и наследуются от InkJetPrinter или LaserPrinter.
Каждый класс UserControl в графическом интерфейсе, который представляет принтер, должен иметь функции и возможности, специфичные для данного типа принтера. Например, у струйного принтера может быть дисплей, показывающий уровень чернил, у определенной модели лазерного принтера могут быть специальные функции, доступ к которым можно получить с помощью дополнительной кнопки на элементе управления и т. Д.
Я не вижу лучшего способа справиться с этим, чем иметь иерархию наследования классов UserControl, параллельную иерархии наследования классов Printer. Есть ли лучший подход?