1

我需要我的父类能够访问子类中的方法。子类显然能够访问它们继承的父类方法。

但是,如果孩子 A 想借一个属于孩子 B 的玩具怎么办?孩子 A 会问父母是否可以从孩子 B 那里借那个玩具。父母告诉孩子 A,他们会从孩子 B 的房间里把它拿下来给孩子 A 玩。

我还在下面创建了这个场景来帮助说明我在这里需要什么。不太确定如何去做。

[故事]

假设您购买了新房子。您希望重新粉刷您工作时间的某些区域。哦,顺便说一句,你需要检查你的管道。

所以我们有一个人、房子、画家和水管工。

该人将找到众议院的问题区域,并将其写下来。然后,此人需要找到水管工和油漆工并打电话给他们,报告他们的问题。

然后,水管工和油漆工将带着他们的专业工具和设备出现在房子里,继续他们的工作。

房子将有以下区域:

  1. 洗手间
  2. 下沉
  3. 淋浴
  4. 外墙板
  5. 内墙

    • 水管工需要使用厕所、水槽和淋浴间。
    • 画家将需要使用外墙和内墙。

所以水管工和油漆工已经到了房子,开始做他们最擅长的事情。

首先,水管工需要在内部完成他的工作,所以一旦水管工完成,油漆工将开始绘制外部壁板并移动到内墙。

水管工已经完成了他的工作。管道工向人员报告,让他们知道工作已完成。

然后,Person 告诉 Painter 管道工已经完成,并且当 Painter 准备好后,Painter 可以开始粉刷内墙。

在这种情况下,哪种类结构最好?我阅读了一些引起我兴趣的模式。

命令模式和对象池。

我认为对象池是更多的选择。这里有什么输入吗?

另外,如果我确实采用了对象池路线,那么在构造函数中实例化每个类并准备好供以后使用会更好吗?或者我应该仅在需要使用每个类时实例化它吗?(可能通过一些“运行”或“执行”方法完成)。

示例将不胜感激。

另外,我宁愿不使用静态调用!

4

1 回答 1

0

如果我理解正确,您想要做的是static在您的父类中创建一个变量,该变量包含对您的子实例的所有引用(您必须自己跟踪实例,例如在您的function __constructfunction __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();
         }
    }
于 2012-05-10T08:13:18.377 回答