2010-10-20 2 views
1

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

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

Благодаря

+3

Хех. Я никогда не слышал, чтобы это называлось «OCP» раньше. Это звучит как рэп-песня: «Ваша программа с O.C.P.?». – Ken

ответ

0

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

Open Closed Principle (PDF)

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

Смежные вопросы