1. Definição
Sem destruir o encapsulamento, capture o estado interno de um objeto e salve esse estado fora do objeto. Dessa forma, o objeto pode ser restaurado ao seu estado salvo original posteriormente.
2. Razões para uso
Deseja restaurar o estado original do objeto em algum momento.
3. Exemplos de situações aplicáveis
Existem muitas aplicações do modo de memorando, mas nós o vimos, mas não pensamos nisso com cuidado. Este é apenas o uso do modo de memorando. Deixe -me dar -lhe alguns exemplos:
EG1. Uso de memorandos no JSP+Javabean:
Ao adicionar uma conta em um sistema, você precisa preencher o nome de usuário, senha, número de contato, endereço e outras informações no formulário. Se alguns campos não forem preenchidos ou forem preenchidos incorretamente, quando o usuário clicar no botão "Enviar", você precisará salvar as opções inseridas pelo usuário na nova página e solicitar as opções erradas. Isso é alcançado usando as características do Scope = "Solicitação" ou Scope = "Session" do Javabean, ou seja, é alcançado usando o modo memorando.
EG2. Ao reparar os freios do carro. Primeiro, remova os defletores de ambos os lados para expor as pastilhas de freio esquerdo e direito. Apenas uma peça pode ser removida e a outra peça serve como um memorando para indicar como o freio é instalado. Somente depois que o reparo desta peça é concluído, outra peça pode ser removida. Quando a segunda peça é removida, a primeira peça se torna um memorando.
EG3. Dizem que não há remédio para comprar na vida. Todos estamos pagando o preço pelo que fazemos, mas no mundo suave, há "remédio para arrependimento". Depois de alterar certos estados de algo, desde que salvemos certos estados da coisa antes, podemos restaurar o estado da coisa através do modo de memorando. De fato, este também é uma "caixa de tesouro da lua" que pode voltar no tempo, e a palavra "mágica" é incrível.
4. Estrutura e descrição do diagrama de aula
(1) O diagrama de classes é o seguinte:
(2) Descrição da classe (i) Memento: Memorando, o principal trabalho é o seguinte:
Armazenar o estado interno do objeto iniciador;
Ele pode proteger seu conteúdo de ser lido por qualquer objeto que não seja o objeto Originador.
(ii) Originador: O papel do patrocinador, conclui principalmente as seguintes tarefas:
Crie um objeto de memorando com o estado interno atual;
Use o objeto memorando para armazenar seu estado interno.
(iii) zelador: a pessoa responsável, o trabalho é concluído da seguinte forma:
Responsável por preservar objetos de memorando;
O conteúdo do objeto memorando não é salvo.
5. Exemplo
/ *** Data Object*/ public class DataState {Private String Action; public void Setaction (ação da string) {this.action = Action; } public string getAction () {return Action; }} /*** Um objeto que salva a cópia do estado interno de outro objeto. Dessa forma, o objeto pode ser restaurado ao estado salvo original no futuro. */ importar java.io.file; importar java.io.serializable; classe pública Memento implementa serializável { /*private Int Number; arquivo de arquivo privado = nulo; public Memento (Originator O) {this.number = O.getNumber (); this.File = O.getFile (); } public int getNumber () {return this.number; } public void setNumber (int número) {this.number = número; } public file getfile () {return this.file; } public void setFile (arquivo de arquivo) {this.file = file; } */ estado de dados privado; public Memento (Originator O) {this.state = O.getState (); } public DataState getState () {Return State; } public void setState (estado de dados) {this.state = state; }} public class Originator { /* Private Int Number; arquivo de arquivo privado = nulo; public Originator () {} // Crie uma lembrança e a passa para a lembrança pública como um parâmetro public Memento getMemento () {return New Memento (this); } // Retire os dados salvos do Memento e restaurá -los para o seu Estado Public Void SetMemento (Memento M) {number = m.getNumber (); arquivo = m.getfile (); } public int getNumber () {retornar número; } public void setNumber (int número) {this.number = número; } public file getFile () {return file; } public void setFile (arquivo de arquivo) {this.file = file; }*/ estado de dados privado; public Originator () {} Public Originator (estado de dados de dados) {this.state = state; } // Crie uma lembrança e passa -a para a lembrança pública como um parâmetro public Memento getMemento () {return New Memento (this); } // Retire os dados salvos do Memento e restaurá -los para o seu Estado Public Void SetMemento (Memento M) { / * * O objeto criado por getMemento () é salvo em um contêiner. * Quando precisar ser restaurado, passe -o para o método atual e use getState () para obter */ this.state = m.getState (); } public DataState getState () {Return State; } public void setState (estado de dados) {this.state = state; }} /** O originador é usado para carregar dados, criar objetos de lembrança e restaurar os dados originais por meio de Memento*/ public class Test {public static void main (string [] args) {// Originator Originator = new Originator (); // Originator.SetNumber (8); // // Memento Memento = Originator.getMemento (); // System.out.println (Memento.getNumber ()); DataState State = new DataState (); state.setAction ("Copiar um caractere"); Originador Originador = novo Originador (); System.out.println ("Criar dados originais"); Originator.SetState (estado); System.out.println ("Crie objeto de memorando, salve o estado de dados original"); Memento Memento = Originator.getMemento (); System.out.println ("Crie um novo dados"); Originator.SetState (new DataState ()); System.out.println ("Depois de criar novos dados:" + Originator.getState (). GetAction ()); /** O Memento precisa ser salvo em um determinado local e recuperado quando necessário para restaurar os dados salvos dentro dele*/ System.out.println ("Restaure os dados originais após a criação de novos dados"); Originator.setMemento (Memento); System.out.println (Originator.getState (). GetAction ()); }}Imprimir:
Crie objeto de memorando de criação de dados originais, salve o estado de dados original Crie um novo dados depois de criar novos dados: NULL Após criar novos dados, restaurar a cópia original de dados a um caractere