Допустим, у меня есть класс Door и класс Lock. Экземпляры класса Door имеют свойство lock
, которое является экземпляром класса Lock.
Я хочу, чтобы дверь «владела» этим экземпляром замка, но я не хочу, чтобы дверь могла изменить свой собственный замок. Например, я НЕ хочу, чтобы это было возможно:
class FancyDoor extends Door {
function unlockMyself() {
$this->lock->locked = false;
}
}
Но я ДЕЙСТВИТЕЛЬНО хочу, чтобы дверной замок был доступен другим классам. Например, мне нужен класс DoorMan, чтобы иметь возможность запирать и открывать двери. Так что это не так просто, как сделать все свойства блокировки приватными.
Есть ли шаблон для этого? Я в основном работаю на PHP, но ответ должен быть специфичным для языка. Заранее спасибо.