Heim >Backend-Entwicklung >PHP-Tutorial >PHP-State-Mode-Programmierung
Was ist PHP-State-Mode-Programmierung? In diesem Artikel wird hauptsächlich die detaillierte Erklärung der Zustandsmodusprogrammierung in PHP vorgestellt, die der Teamzusammenarbeitsprogrammierung förderlich ist. Ich hoffe, dass sie für alle hilfreich ist.
Definition
Zustandsmuster, auch bekannt als Muster von Objekten für Zustand, Zustandsmuster ist das Verhaltensmuster von Objekten. Das Zustandsmuster ermöglicht es einem Objekt, sein Verhalten zu ändern, wenn sich sein interner Zustand ändert. Dieses Objekt sieht aus, als hätte es seine Klasse geändert
UML-Diagramm
Hauptrolle im Zustandsmuster
Abstrakte Statusrolle (State): Definieren Sie eine Schnittstelle oder einen abstrakten Klassenstatus, um das Verhalten zu kapseln, das einem bestimmten Status des Umgebungsobjekts entspricht.
Konkrete Statusrolle (ConcreteState): Jede Statusklasse implementiert das Umgebungsverhalten, das einem Status von ( Kontext)
Umgebungsrolle (Kontext): Definieren Sie die Schnittstelle, an der der Client interessiert ist, und behalten Sie eine Instanz einer bestimmten Zustandsklasse bei. Eine Instanz dieser spezifischen Zustandsklasse gibt den aktuellen Zustand dieses Umgebungsobjekts an
Verwendungsszenario
Betrachten Sie eine Anwendung eines Online-Abstimmungssystems, um denselben Benutzer zu steuern. Geben Sie nur eine Stimme ab. Wenn ein Benutzer mehr als 5 Mal abstimmt, wird dies als böswilliges Vote-Brushing gewertet. Wenn ein Benutzer mehr als 8 Mal abstimmt, muss er zur schwarzen Liste hinzugefügt werden Verwenden Sie den Statusmodus, um zunächst den Abstimmungsprozess zu implementieren. Es werden verschiedene Zustände definiert, die gemäß der obigen Beschreibung grob in vier Zustände unterteilt werden können: normale Abstimmung, böswillige Abstimmung und Blacklist-Abstimmung. Erstellen Sie dann ein Abstimmungsverwaltungsobjekt (entspricht Kontext)
UML-Diagramm
Beispielcode
<?php /** * 抽象状态类 * @author wzy * */ interface VoteState { /** * 需要实现的公共方法 */ public function vote (); } /** * 具体状态——正常投票 * * @author wzy * */ class NormalVoteState implements VoteState { public function vote () { echo "这是一个正常投票!"; } } /** * 具体状态——恶意投票 * * @author wzy * */ class RepeatVoteState implements VoteState { public function vote () { echo "这是一个恶意投票!"; } } /** * 具体状态——黑名单投票 * * @author wzy * */ class BlockVoteState implements VoteState { public function vote () { echo "这是一个黑名单投票!"; } } /** * Context角色 */ class VoteManager { /** * 投票数量 * * @var int */ private $vote_count; /** * 状态类实例 * * @var object */ private $voteInstance; /** * 构造函数,初始化成员属性 * * @param int $count */ public function __construct ($count = 1) { $this->vote_count = $count; } /** * 客户端调用的接口函数 */ public function setState ($count) { if (! is_null($count)) { $this->vote_count = $count; } if ($this->vote_count < 5) { $this->voteInstance = new NormalVoteState(); } else if ($this->vote_count < 8) { $this->voteInstance = new RepeatVoteState(); } else { $this->voteInstance = new BlockVoteState(); } $this->voteInstance->vote(); } } /** * 模拟客户端操作 */ $object = new VoteManager(); $object->setState(1); echo "<br>"; $object->setState(6); echo "<br>"; $object->setState(10);
Status und Verhalten
So -genannt Der Zustand eines Objekts bezieht sich normalerweise auf den Wert des Attributs der Objektinstanz. Genauer gesagt können die meisten Verhaltensweisen auf Methoden abgebildet werden Die Funktion des Zustandsmusters besteht darin, die Zustandsverhaltensaufruffunktionen zu trennen, die verschiedenen Zuständen entsprechen, indem Zustandsänderungen beibehalten werden. Mit anderen Worten, Zustand und Verhalten hängen zusammen, und ihre Beziehung kann wie folgt beschrieben werden: Der Zustand bestimmt das Verhalten
Da sich der Zustand während der Laufzeit ändert, ändert sich auch das Verhalten entsprechend der Zustandsänderung während der Laufzeit
Clients interagieren im Allgemeinen nur mit der Umgebung (Kontext). Der Client kann das Statusobjekt zum Konfigurieren einer Umgebung (Kontext) verwenden. Sobald die Konfiguration abgeschlossen ist, muss er sich nicht mehr mit dem Statusobjekt befassen. Der Kunde ist in der Regel nicht für die Zustandserhaltung während des Betriebs verantwortlich und auch nicht dafür verantwortlich, welches bestimmte Zustandsverarbeitungsobjekt anschließend verwendet wird
Verwandte Empfehlungen:
PHP Design Patterns Simple Factory Pattern
Der Unterschied zwischen Factory Pattern und Singleton Pattern im PHP Design Pattern
PHP-Polymorphismus und dynamische Bindung
Das obige ist der detaillierte Inhalt vonPHP-State-Mode-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!