Как вы пишете код, который соответствует OCP? - PullRequest
1 голос
/ 21 октября 2010

Я недавно пытался узнать об основных принципах проектирования, и OCP немного смутил меня.Имеет смысл, что когда происходит изменение, предпочтительно расширить систему, а не модифицировать существующие и рабочие части.Но не является ли это скорее принципом того, как осуществлять изменения в системе, а не как ее проектировать?Разве весь код в основном не открыт для расширения с использованием подклассов?И как можно закрыть любой код для модификации - не зависит ли это от того, как лицо, реализующее изменение, решит его использовать?

Возможно, пример кода, который не следует OCP и как именноэто нарушило бы принцип, и мне было бы полезно понять это.

Спасибо

1 Ответ

0 голосов
/ 21 октября 2010

Типичным примером будет любая логика, которая разветвляется на тип вещей. Это означает, что каждый раз, когда вам нужно добавить новый тип, вы должны изменить этот код. Использование виртуальных функций означает, что вы можете просто добавлять новые классы для новых типов без изменения существующего кода.

Открытый закрытый принцип (PDF)

Там есть примеры кода.

...