Проектирование двух схожих классов, разделяющих множество свойств и методов (но не всех)?
Абстрактный класс не рассматривается как родитель? На сколько я понимаю много кода будет общего, интерфейс прекрасно заменяется абстрактным классом + сколько нужно наследников.
Может быть как то так? интерфейс общий, просто у одного принтера придется переопределить методы для вызова нового с передачей пароля. Я идеале он сможет использовать методы базового абстрактного класса.
Код на pastebin