>我需要我的父类能够访问子类中的方法。子类显然能够访问其继承的父类方法。
但是,如果孩子A想借一个属于孩子B的玩具怎么办?孩子A会问父母是否可以从孩子B那里借玩具。父母告诉孩子A,他们会从孩子B的房间里拿走它,然后交给孩子A玩。
我还在下面创建了这个场景,以帮助说明我在这里需要什么。不太确定如何做到这一点。
[故事]
假设您购买了一栋新房子。您希望重新粉刷工作时间的某些区域。哦,顺便说一下,你需要看看你的管道。
所以我们有一个人,房子,画家和水管工。
该人将找到房屋中的问题区域,并将它们写下来。然后,该人需要找到水管工和油漆工并打电话给他们,报告他们的问题。
然后,水管工和画家将带着他们的专业工具和设备出现在房子里,继续他们的工作。
众议院将有以下区域:
- 厕所
- 沉
- 淋浴
- 外部壁板
-
内墙
- 水
- 管工需要使用马桶、水槽和淋浴。
- 画家需要进入外墙和内墙。
所以水管工和画家已经来到房子里,开始做他们最擅长的事情。
首先,水管工需要在内部执行他的工作,因此画家将从绘制外部壁板开始,并在水管工完成后移动到内墙。
水管工已经完成了他的工作。水管工向人员报告,让他们知道工作已完成。
然后,该人告诉画家水管工已经完成,当画家准备好时,画家可以开始绘制内墙。
在这种情况下,哪种类结构最好?我阅读了几个引起我兴趣的模式。
命令模式和对象池。
我认为对象池更像是要走的路线。这里有任何输入吗?
另外,如果我确实采用了对象池路由,那么在构造函数中实例化每个类并准备好供以后使用会更好吗?还是应该仅在需要使用每个类时才实例化每个类?(可能通过某种"运行"或"执行"方法完成(。
举例说明将不胜感激。
另外,我宁愿不使用静态调用!
如果我
理解正确,您要做的是在父类中创建一个static
变量,该变量包含对子实例的所有引用(您必须自己跟踪实例,例如在您的function __construct
和function __destruct
中。
class Parent {
public static $references = array;
public function __construct() {
Parent::$references[] = $this;
}
public function __destruct() {
// loop through $references and kill $this from it.
}
public function run($ref, $func) {
// find the reference in $references and store to $r
if (method_exists($func, $r)) {
$r->$func();
}
}