Memo-Muster und seine PHP-Implementierung
Das Memomuster ist ein Verhaltensmuster, das den internen Zustand eines Objekts erfasst und diesen Zustand außerhalb des Objekts speichert, ohne die Kapselung zu zerstören. Dadurch können Sie den Zustand des Objekts später wieder auf seinen zuvor gespeicherten Zustand zurücksetzen.
Hauptrolle
Memento-Rolle: Speichert den internen Status des Urheberobjekts, und der Urheber entscheidet nach Bedarf, welcher interne Status des Urhebers im Memento gespeichert wird. Ein Andenken kann seinen Inhalt davor schützen, von einem anderen Objekt als dem Urheberobjekt gelesen zu werden.
Urheberrolle: Erstellen Sie ein Memoobjekt, das den aktuellen internen Status enthält, und verwenden Sie das Memoobjekt, um seinen internen Status zu speichern.
Verwalterrolle: Verantwortlich für das Speichern des Memoobjekts, nicht für die Überprüfung des Inhalts das Memo-Objekt
Anwendbarkeit
Es ist notwendig, (einen Teil) des Zustands eines Objekts zu einem bestimmten Zeitpunkt zu speichern, damit es bei Bedarf später wieder in den vorherigen Zustand zurückversetzt werden kann.
Wenn eine Schnittstelle verwendet wird, um anderen Objekten den direkten Erhalt dieser Zustände zu ermöglichen, werden die Implementierungsdetails des Objekts offengelegt und die Kapselung des Objekts zerstört.
Klassendiagramm
Instanz
<?php class Originator { // 发起人(Originator)角色 private $_state; public function __construct() { $this->_state = ''; } public function createMemento() { // 创建备忘录 return new Memento($this->_state); } public function restoreMemento(Memento $memento) { // 将发起人恢复到备忘录对象记录的状态上 $this->_state = $memento->getState(); } public function setState($state) { $this->_state = $state; } public function getState() { return $this->_state; } public function showState() {} } class Memento { // 备忘录(Memento)角色 private $_state; public function __construct($state) { $this->setState($state); } public function getState() { return $this->_state; } public function setState($state) { $this->_state = $state;} } class Caretaker { // 负责人(Caretaker)角色 private $_memento; public function getMemento() { return $this->_memento; } public function setMemento(Memento $memento) { $this->_memento = $memento; } } // client /* 创建目标对象 */ $org = new Originator(); $org->setState('open'); $org->showState(); /* 创建备忘 */ $memento = $org->createMemento(); /* 通过Caretaker保存此备忘 */ $caretaker = new Caretaker(); $caretaker->setMemento($memento); /* 改变目标对象的状态 */ $org->setState('close'); $org->showState(); /* 还原操作 */ $org->restoreMemento($caretaker->getMemento()); $org->showState(); ?>
Vor- und Nachteile
Vorteile
Manchmal einige Die internen Informationen des Initiatorobjekts müssen außerhalb des Initiatorobjekts gespeichert werden, müssen jedoch vom Initiatorobjekt selbst gelesen werden.
Die Originator-Klasse wurde vereinfacht. Der Urheber muss keine Versionen seiner internen Status mehr verwalten und speichern. Clients können die Versionen dieser Status, die sie benötigen, selbst verwalten.
Wenn sich der Status der Urheberrolle ändert, ist es möglich, dass dieser Status ungültig ist. Zu diesem Zeitpunkt können Sie das vorübergehend gespeicherte Memo verwenden, um den Status wiederherzustellen.
Nachteile
Wenn der Status der Initiatorrolle vollständig im Memoobjekt gespeichert werden muss, ist das Memoobjekt hinsichtlich des Ressourcenverbrauchs sehr teuer.
Wenn die verantwortliche Person ein Memo speichert, weiß die verantwortliche Person möglicherweise nicht, wie viel Speicherplatz dieser Status belegt, und kann den Benutzer daher nicht daran erinnern, ob ein Vorgang teuer sein wird.
Wenn sich der Status der Initiatorrolle ändert, ist es möglich, dass der Status ungültig ist.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.
