【发布时间】:2017-02-18 08:51:38
【问题描述】:
假设我有一个 Door 类和一个 Lock 类。 Door 类的实例有一个 lock 属性,它是 Lock 类的一个实例。
我希望门“拥有”它是 Lock 的实例,但我不希望门能够更改自己的锁。例如,我不希望这成为可能:
class FancyDoor extends Door {
function unlockMyself() {
$this->lock->locked = false;
}
}
但我确实希望其他班级可以使用门锁。例如,我需要一个 DoorMan 类来锁定和解锁门。所以这并不像将所有 Lock 属性都设为私有那么简单。
有这样做的模式吗?我主要在 PHP 中工作,但答案确实需要特定于语言。提前致谢。
【问题讨论】:
标签: class inheritance design-patterns visibility class-visibility