Принцип Open/closed предполагает, что вы можете создавать системы, в которых новые функции добавляются путем добавления нового кода, а не для изменения старого кода. Чтобы быть полностью совместимым с принципом «открыто/закрыто», нужно иметь идеальное предвидение. Для того, чтобы создать систему, которая полностью открыта для расширения и закрыта для всех модификаций, вы должны иметь возможность точно предсказать будущее. Нужно заранее знать, какие новые функции запросит клиент, чтобы поместить точки расширения в код.
Сказав, что мы можем разработать системы, которые достаточно хорошо соответствуют принципу открытого/закрытого типа. Используя итеративный процесс с большим количеством обратной связи и рефакторинга, мы можем улучшить части системы, которые чаще всего меняются, делая их открытыми для расширения и закрытыми для модификации.
Как говорит Боб Мартин в одной из своих лекций: «Мы не можем полностью соответствовать принципу« открыто/закрыто ». Это не значит, что мы должны просто полностью отказаться от открытого/закрытого принципа. все системы соответствуют принципу «открыто/закрыто», но нетрудно сделать функции или классы или более мелкие компоненты согласованными с принципом «открыто/закрыто». «
Ответ на этот вопрос« да », который сделал бы довольно дерьмовым answer ... – PeeHaa
Даже этот ответ полезен для данных: –
Это, вероятно, слишком открытое для SO - но я нашел эти два сообщения полезными, когда думал о SOLID: http://accu.org/index.php/ журналы/1957 и http://accu.org/index.php/journals/1957 – doctorlove