Перестал понимать о чём речь, да и шутить не пытался
Предлагаю всё-таки разобраться с паттерном мост
Давай, как найдешь время. Значит я утверждаю, что нужно использовать прямое наследование везде, где это возможно, вместо того, чтоб выносить мозг ниндзя-патернами, целесообразность которых под большим вопросом. Не можешь отнаследовать квадрат от прямоугольника - не наследуй. Наследовать от неправильного многоугольника просто и рационально? Ни в чем себе не отказывай. Т.е. если бы мне предложили прокинуть мост, чтоб перебраться через пешеходную дорожку с бордюром в 3 см, то я б ответил - незачет, причем с отработкой на посадках леса. Там надо будет выкопать абстрактную яму абстрактной лопатой, таким образом, чтоб уточненные абстракции ямы, не зависили от конкретных реализаций лопат. Итак, паттерн Мост. Что есть что в контексте фигур? Идем по википедии: Abstraction, RefinedAbstraction, Implementor, ConcreteImplementorA, ConcreteImplementorB, и все их operations. От метода draw (канавас, SVG, кастомная сцена?) предлагаю сразу отказаться, так же как от print() в документе, из-за нарушения принципа единой ответственности.