簡體   English   中英

從另一個類訪問一個類中的一個類

[英]Accessing a class within a class from another class

我需要我的父類能夠訪問子類中的方法。 子類顯然能夠訪問其繼承的父類方法。

但是,如果孩子A想借用屬於孩子B的玩具怎么辦? 孩子A會問父母是否可以向孩子B借玩具。父母告訴孩子A,他們將從孩子B的房間拿走玩具,然后交給孩子A玩。

我還在下面創建了此方案,以幫助說明我在這里需要什么。 不太確定如何執行此操作。

[故事]

假設您購買了新房子。 您需要在您的某些時間重新粉刷。 哦,對了,您需要檢查一下管道。

所以我們有個人,房屋,畫家和水管工。

該人員將在房屋中找到問題區域,並將其寫下來。 然后,該人員將需要找到一名水管工和一個畫家,並打電話給他們,報告他們的問題。

然后,水管工和畫家將帶着他們專門的工具和設備來到眾議院,繼續他們的工作。

眾議院將具有以下領域:

  1. 廁所
  2. 下沉
  3. 淋浴
  4. 外牆板
  5. 內牆

    • 水管工將需要使用洗手間,水槽和淋浴間。
    • 畫家將需要使用外牆板和內牆。

因此,水管工和畫家已經到達房子開始做他們最擅長的事情。

首先,水管工需要在室內完成工作,因此一旦水管工完成,畫家將開始為外牆塗料上漆並移至內牆。

水管工完成了他的工作。 水管工向該人報告,以使他們知道工作已完成。

然后,此人告訴畫家,管道工已完成,並且畫家准備就緒后,畫家就可以開始噴塗內牆了。

在這種情況下哪種類結構最好? 我讀了一些引起我興趣的模式。

命令模式和對象池。

我認為對象池化是更多的選擇。 這里有輸入嗎?

另外,如果我確實采用了對象池路由,那么在構造函數中實例化每個類並准備將其用於以后會更好嗎? 還是應該僅在需要使用時實例化每個類? (可能通過某種“運行”或“執行”方法完成)。

例子將不勝感激。

另外,我寧願不使用靜態調用!

如果我理解正確,那么您想要做的是在父類中創建一個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();
         }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM