Параллельные иерархии наследования.
Всякий раз при создании подкласса какого-то класса приходится создавать ещё один подкласс для другого класса.
##Признаки и симптомы
Всякий раз при создании подкласса какого-то класса приходится создавать ещё один подкласс для другого класса.

abstract class Engine {}
class CarEngine extends Engine {}
class TruckEngine extends Engine {}
abstract class EngineView {}
class CarEngineView extends EngineView {}
class TruckEngineView extends EngineView {}
// добавив BusEngine, придётся добавить и BusEngineView##Причины проблемы
Пока иерархия была небольшая, всё было хорошо. Но с появлением новых классов вносить изменения становилось всё сложнее и сложнее.
##Лечение
Приёмы рефакторинга
##Результат
-
Уменьшает дублирования кода.
-
Может улучшить организацию кода.
