pen/closed Principle
Расширяйте классы, но не изменяйте их первоначальный код.
Стремитесь к тому, чтобы классы были открыты для расширения, но закрыты для изменения. Главная идея этого принципа в том, чтобы не ломать существующий код при внесении изменений в программу.
Класс можно назвать открытым, если он доступен для расширения. Например, у вас есть возможность расширить набор его операций или добавить к нему новые поля, создав собственный подкласс.
В то же время, класс можно назвать закрытым (а лучше сказать законченным), если он готов для использования другими классами. Это означает, что интерфейс класса уже окончательно определён и не будет изменяться в будущем.
Если класс уже был написан, одобрен, протестирован, возможно, внесён в библиотеку и включён в проект, после этого пытаться модифицировать его содержимое не желательно. Вместо этого, вы можете создать подкласс и расширить в нём базовое поведение, не изменяя код родительского класса напрямую.
Но не стоит следовать этому принципу буквально для каждого изменения. Если вам нужно исправить ошибку в исходном классе, просто возьмите и сделайте это. Нет смысла решать проблему родителя в дочернем классе.
Пример
Класс заказов имеет метод расчёта стоимости доставки, причём способы доставки «зашиты» непосредственно в сам метод. Если вам нужно будет добавить новый способ доставки, то придётся трогать весь класс Order.

ДО: код класса заказа нужно будет изменять при добавлении нового способа доставки.
Проблему можно решить, если применить паттерн Стратегия. Для этого нужно выделить способы доставки в собственные классы с общим интерфейсом.

ПОСЛЕ: новые способы доставки можно добавить, не трогая класс заказов.
Теперь при добавлении нового способа доставки нужно будет реализовать новый класс интерфейса доставки, не трогая класса заказов. Объект способа доставки в класс заказа будет подавать клиентский код, который раньше устанавливал способ доставки простой строкой.
Бонус этого решения в том, что расчёт времени и даты доставки тоже можно поместить в новые классы, повинуясь принципу единственной ответственности.

