Вот некоторые типичные причины перепроектирования, а также паттерны, которые позволяют этого избежать:
• при создании объекта явно указывается класс. Задание имени класса привязывает вас к конкретной реализации, а не к конкретному интерфейсу
Паттерны объектно-ориентированного проектирования
·
Джон Влиссидес