我需要我的父类能够访问子类中的方法。子类显然能够访问其继承的父类方法。
但是如果孩子A想要借用属于孩子B的玩具怎么办?孩子A会问父母是否可以从孩子B借用该玩具。父母告诉孩子A他们会从孩子B的房间抓住它并将其交给孩子A玩。
我还在下面创建了这个场景,以帮助说明我需要的内容。不太确定如何做到这一点。
[情节]
假设您购买了一套新房子。您希望某些时间区域重新粉刷。哦,顺便说一句,你需要看看你的管道。
所以我们有一个人,房子,画家,和管道工。
此人将在众议院找到问题区域并将其写下来。然后,人员需要找到一个水管工和一个画家并打电话给他们,报告他们的问题。
然后,水管工和画家将带着他们专业的工具和设备出现在众议院继续他们的工作。众议院将拥有以下区域:
内墙
所以水管工和画家已到达房子开始做他们最擅长的事情。
首先,水管工需要在里面完成他的工作,所以一旦水管工完成,画家将开始绘制外墙板并移动到内墙。
水管工完成了他的工作。水管工向人员报告,让他们知道工作已经完成。
然后,人告诉画家水管工已经完成,并且当画家准备好时,画家可以开始画内墙。
在这种情况下哪种类结构最好?我读了几个引起我兴趣的模式。
命令模式&对象池。
我认为对象池是更多的选择。这里有什么输入吗?
另外,如果我确实采用了对象池路径,那么在构造函数中实例化每个类并准备好以后再使用它会更好吗?或者我应该只在我需要使用它时才实例化每个类? (可能是通过一些“运行”或“执行”方法完成的。)
示例将不胜感激。
另外,我不想使用静态调用!
答案 0 :(得分:0)
如果我理解正确,您要做的是在父类中创建一个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();
}
}