Dieser Artikel beschreibt die von Java implementierte Dokumentbearbeitungsmodus -Switching -Funktion basierend auf dem Statusmodus. Teilen Sie es für Ihre Referenz wie folgt weiter:
Eine Musterdefinition
Statusmodus: Wenn sich der innere Zustand eines Objekts ändert, ermöglicht es das Ändern seines Verhaltens und das Objekt sieht so aus, als hätte es seine Klasse geändert.
Beispiele für den zweiten Modus
1 Musteranalyse
Wir verwenden den Fall des Dokumentenbearbeitungsmodus, um diesen Modus zu veranschaulichen.
2 Statische Klassendiagramm des statischen Modus
3 Code Beispiele
3.1 Erstellen Sie eine staatliche Schnittstelle-ISTATE
Paket com.demo.state; import com.demo.context.context;/** * * Statusschnittstelle * * @author * */public interface istate {/** * Statusübergang * * @param context * @param modus */public void ConvertState (Kontextkontext, int -Modus); / ** * methode speichern * * @param context */ public void Save (Kontextkontext); / ** * Methode ändern * * @param context */ public void modify (Kontextkontext); / ** * Neue Methode * * @param Context */ public void add (Kontextkontext); / ** * Methode anzeigen * * @param context */ public void View (Kontextkontext);}3.2 Erstellen Sie einen Kontext-Kontext
Paket com.demo.context; import com.demo.state.istate;/** * Kontextumgebung * * @author * */public class Context {// Vorschau -Modus public static Final int preview_mode = 0; // Modus bearbeiten public static final int edit_mode = 1; // Aktueller Staat privater Staat; // State öffentliche void Changestate (iState State) {this.state = STAAT; } / ** * run * @param modus * / public void dowork (int modus) {System.out.println ("------------------------------"); this.state.convertState (this, modus); this.state.add (this); this.state.save (this); this.state.modify (this); this.state.view (this); System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------3.3 Status 1 bearbeiten 1 Editstate
Paket com.demo.state; import com.demo.context.context;/*** moduszustand bearbeiten }} / *** Neu im Bearbeitungsmodus* / public void add (Kontextkontext) {System.out.println ("Modus bearbeiten [add] ..."); } / *** Modus bearbeiten. Änderung* / public void modify (Kontextkontext) {System.out.println ("Modus bearbeiten [Modify] ..."); } / *** Saving -Modus bearbeiten* / public void Save (Kontextkontext) {System.out.println ("Modus bearbeiten [Speichern] ..."); } / *** Modusansicht bearbeiten* / public void View (Kontextkontext) {System.out.println ("Modus bearbeiten [Ansicht] ..."); }}3.4 Vorschau
package com.demo.state;import com.demo.context.Context;/** * Preview mode status* * @author * */public class PreviewState implements IState { /** * State transition*/ public void convertState(Context context, int mode) { if (mode == Context.EDIT_MODE) { context.changeState(new EditState()); }} / *** Neu im Vorschau -Modus* / public void add (Kontextkontext) {System.out.println ("Vorschau -Modus unterstützt die [neue] Funktion nicht!"); } / *** Vorschau -Modus Änderung* / public void modify (Kontextkontext) {System.out.println ("Vorschau -Modus unterstützt die Funktion [modify]!"); } / *** Vorschau -Modus Speichern* / public void Save (Kontextkontext) {System.out.println ("Vorschau -Modus unterstützt die Funktion [Speichern]!"); } / *** Vorschau -Modus -Ansicht* / public void View (Kontextkontext) {System.out.println ("Vorschau -Modus [Ansicht] ..."); }}3.5 Client -Test -Client
Paket com.demo; import java.util.random; import com.demo.context.context; com.demo.state.editstate;/** * Client -Anwendung * * @Author * */public class Client {/** * @param args */public static void Main (String [] args [] args [] args [] args [] args [] {] {/** @param contexte = new contexte (). context.changestate (new editState ()); Random random = new random (); für (int i = 0; i <5; i ++) {int r = random.Nextint (2); System.out.println ("Aktueller Modus:" + (r == 0? "Vorschau -Modus": (r == 1? "Bearbeiten -Modus": "")); context.dowork (r); }}}4 Auslaufergebnisse
Aktueller Modus: Modus bearbeiten
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bearbeitungsmodus [neu] ...
Modus bearbeiten [Speichern] ...
Bearbeitungsmodus [Modify] ...
Modus bearbeiten [Ansicht] ...
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Aktueller Modus: Modus bearbeiten
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bearbeitungsmodus [neu] ...
Modus bearbeiten [Speichern] ...
Bearbeitungsmodus [Modify] ...
Modus bearbeiten [Ansicht] ...
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Aktueller Modus: Vorschau -Modus
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Der Vorschau -Modus unterstützt die [neue] Funktion nicht!
Der Vorschau -Modus unterstützt die Funktion [Speichern] nicht!
Der Vorschau -Modus unterstützt die Funktion [Modify] nicht!
Vorschau -Modus [Ansicht] ...
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Aktueller Modus: Vorschau -Modus
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Der Vorschau -Modus unterstützt die [neue] Funktion nicht!
Der Vorschau -Modus unterstützt die Funktion [Speichern] nicht!
Der Vorschau -Modus unterstützt die Funktion [Modify] nicht!
Vorschau -Modus [Ansicht] ...
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Aktueller Modus: Modus bearbeiten
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bearbeitungsmodus [neu] ...
Modus bearbeiten [Speichern] ...
Bearbeitungsmodus [Modify] ...
Modus bearbeiten [Ansicht] ...
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Drei Prinzipien der Gestaltung dieses Musters
1 "Open-Close" -Prinzip
2 Prinzip der Einzelverantwortung
Vier Nutzungsanlässe
1 Das Verhalten eines Objekts wird aus seinem Zustand genommen und muss sein Verhalten nach seinem Staat im Moment der Operation ändern.
2 Eine Operation enthält eine riesige Multi-Branch-Struktur, und diese Zweige werden durch den Zustand des Objekts bestimmt.
Statische Klassendiagramm im Fünf-Staaten-Modus
For more Java-related content, readers who are interested in this site can view the topics: "Introduction and Advanced Tutorial on Java Object-Oriented Programming", "Tutorial on Java Data Structure and Algorithm", "Summary of Java Operation DOM Node Skills", "Summary of Java File and Directory Operation Skills" and "Summary of Java Cache Operation Skills"
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.