Este artigo descreve a função de comutação do modo de edição de documentos implementada pelo Java com base no modo de estado. Compartilhe -o para sua referência, como segue:
Uma definição de padrão
Modo de estado: quando o estado interno de um objeto muda, ele permite alterar seu comportamento e o objeto parece que mudou sua classe.
Exemplos do segundo modo
1 Análise de padrão
Usamos o caso do modo de edição de documentos para alternar para ilustrar esse modo.
2 Diagrama de classe estática no modo estático
3 exemplos de código
3.1 Crie uma interface de estado
pacote com.demo.state; importar com.demo.context.context;/** * * interface do estado * * @author * */interface pública ISTATE {/** * transição de estado * * @param contexto * @param mode */public void convertate (contexto do contexto, int); / ** * Salvar método * * @param context */ public void salvar (contexto de contexto); / ** * Modificar método * * @param context */ public void modify (contexto de contexto); / ** * novo método * * @param context */ public void add (contexto de contexto); / ** * View Method * * @param context */ public void View (contexto de contexto);}3.2 Crie um contexto de contexto
pacote com.demo.context; importar com.demo.state.istate;/** * ambiente de contexto * * @author * */public class Context {// Modo de visualização public static final int visualize_mode = 0; // editar modo public static final int edit_mode = 1; // estado atual do estado privado; // altera o estado do estado de vazio de void (estado de istate) {this.state = state; } / ** * execute * @param mode * / public void Dowork (int Mode) {System.out.println ("-----------------------------------"); this.state.convertstate (this, modo); this.state.add (this); this.state.save (isto); this.state.modify (this); this.state.View (this); System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------3.3 Editar status 1 EditState
pacote com.demo.state; importar com.demo.context.context;/*** EDIT MODO ESTADO** @Author**/public class EditState implementa istate {/*** transição de estado*/public void convertState (contexto do contexto, int) {if (MODE (== context.review_mode) { }} / *** novo no modo de edição* / public void add (contexto contexto) {System.out.println ("Edit Mode [add] ..."); } / *** Editar modificação do modo* / public void modify (context context) {System.out.println ("Edit Mode [modify] ..."); } / *** EDIT Modo Salvando* / public void Salvar (contexto de contexto) {System.out.println ("Edit Mode [Saving] ..."); } / *** EDIT MODE VIEW* / public void View (contexto de contexto) {System.out.println ("Edit Mode [View] ..."); }}3.4 VisuewState
pacote com.demo.state; importar com.demo.context.Context;/*** Status do modo de visualização** @Author**/public class VisuewState implementa istate {/*** transição de estado*/public void convertstate (contexto de contexto, int) {if (mode == context.Estt_mode) {contextTex. }} / *** novo no modo de visualização* / public void add (contexto contexto) {System.out.println ("O modo de visualização não suporta a função [nova]!"); } / *** Modificação do modo de visualização* / public void modify (contexto context) {System.out.println ("O modo de visualização não suporta a função [modify]!"); } / *** Modo de visualização Salvando* / public void salvar (contexto de contexto) {System.out.println ("O modo de visualização não suporta a função [Saving]!"); } / *** Visualização do modo de visualização* / public void View (contexto de contexto) {System.out.println ("Modo de visualização [view] ..."); }}3.5 Cliente de teste de cliente
pacote com.demo; importar java.util.random; importar com.demo.context.context; importar com.demo.state.editstate;/** * aplicativo cliente * * @author * */public class cliente {/** ** ** @param args */public static void main (string [] args) {args) {contextn) {** ** ** ** ** cuts */public static void main (string [] args) {args) {contextn) {** ** ** ** * * Context.Changestate (New EditState ()); Aleatório aleatório = novo aleatório (); for (int i = 0; i <5; i ++) {int r = aleatom.nextInt (2); System.out.println ("Modo atual:" + (r == 0? "Modo de visualização": (r == 1? "Editar modo": ""))); Context.Dowork (R); }}}4 resultados de execução
Modo atual: Modo de edição
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Modo de edição [novo] ...
Editar modo [Salvar] ...
Modo de edição [Modify] ...
Editar modo [View] ...
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Modo atual: Modo de edição
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Modo de edição [novo] ...
Editar modo [Salvar] ...
Modo de edição [Modify] ...
Editar modo [View] ...
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Modo atual: modo de visualização
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
O modo de visualização não suporta a função [nova]!
O modo de visualização não suporta a função [Salvar]!
O modo de visualização não suporta a função [Modify]!
Modo de visualização [View] ...
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Modo atual: modo de visualização
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
O modo de visualização não suporta a função [nova]!
O modo de visualização não suporta a função [Salvar]!
O modo de visualização não suporta a função [Modify]!
Modo de visualização [View] ...
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Modo atual: Modo de edição
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Modo de edição [novo] ...
Editar modo [Salvar] ...
Modo de edição [Modify] ...
Editar modo [View] ...
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Três princípios de design deste padrão
1 Princípio de "Close Open"
2 Princípio de responsabilidade única
Quatro ocasiões de uso
1 O comportamento de um objeto é retirado de seu estado e deve mudar seu comportamento de acordo com seu estado no momento da operação.
2 Uma operação contém uma enorme estrutura de várias ramificações, e esses ramos são determinados pelo estado do objeto.
Diagrama de classes estática no modo de cinco estados
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"
Espero que este artigo seja útil para a programação Java de todos.