Нет, это не нарушает принцип ООП.
Ярким примером является объект, поведение которого зависит от того, установлено соединение или нет (например, функция doNetworkStuff()
зависит от openConnection()
).
В Java даже есть проверка состояния типа , которая выполняет такие проверки (может ли Duck
уже Quack()
) во время компиляции.У меня часто бывают такие зависимости, как предварительные условия для интерфейсов, и я использую класс пересылки, единственной целью которого является протоколирование и проверка состояния объекта, к которому он пересылается, т. Е. Протокол, функции которого были вызваны для объекта, и генерирование исключений (например, InvalidStateException), когдапредварительные условия не выполнены.
Шаблон проектирования, который обрабатывает это состояние : позволяет объекту изменять свое поведение при изменении его внутреннего состояния.Объект появится, чтобы изменить свой класс. книга шаблонов проектирования от «Банды четырех» также использует приведенный выше пример сетевого подключения, либо устанавливается, либо нет.