備忘錄模式結構:

其他結構:
另外一種實作方法适用于不支援嵌套類的程式設計語言 (沒錯, 我說的就是 PHP)。
在沒有嵌套類的情況下, 你可以規定負責人僅可通過明确聲明的中間接口與備忘錄互動, 該接口僅聲明與備忘錄中繼資料相關的方法, 限制其對備忘錄成員變量的直接通路權限。
另一方面, 原發器可以直接與備忘錄對象進行互動, 通路備忘錄類中聲明的成員變量和方法。 這種方式的缺點在于你需要将備忘錄的所有成員變量聲明為公有。
如果你不想讓其他類有任何機會通過備忘錄來通路原發器的狀态, 那麼還有另一種可用的實作方式。
這種實作方式允許存在多種不同類型的原發器和備忘錄。 每種原發器都和其相應的備忘錄類進行互動。 原發器和備忘錄都不會将其狀态暴露給其他類。
負責人此時被明确禁止修改存儲在備忘錄中的狀态。 但負責人類将獨立于原發器, 因為此時恢複方法被定義在了備忘錄類中。
每個備忘錄将與建立了自身的原發器連接配接。 原發器會将自己及狀态傳遞給備忘錄的構造函數。 由于這些類之間的緊密聯系, 隻要原發器定義了合适的設定器 (setter), 備忘錄就能恢複其狀态。