Você está na página 1de 20

INF011 Padres de Projeto 21 Memento

"andro "antos Andrade


sandroandrade@ifba.edu.br Instituto Federal de $ducao% &i'ncia e Tecnologia da (a)ia e*artamento de Tecnologia $letro+$letr,nica Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

Propsito:

Capturar e externali ar o estado interno de u! objeto" se! #iolar o en$apsula!ento" $o! o objeti#o de restaurar este estado no objeto e! u! !o!ento futuro

%a!b&! $on'e$ido $o!o: Token (oti#a)*o:

Pode+se pre$isar ar!a enar o estado interno de u! objeto para i!ple!entar" por exe!plo" checkpoints e !e$anis!os de undo ,ue possibilita! o retro$esso da apli$a)*o a u! estado anterior -xpor o estado" entretanto" #iola o en$apsula!ento e prejudi$a a $onfiabilidade e extensibilidade da apli$a)*o
INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

(oti#a)*o:

-ditor .r/fi$o $o! $onexes entre objetos 0ConstraintSolver1: pro$esso fal'o de undo

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

(oti#a)*o:

2 Memento & u! objeto ,ue ar!a ena u! snapshot do estado interno de outro objeto o originador do Memento Pro$esso $orreto de undo $o! uso do Memento:

2 editor" $o!o u! efeito $olateral da opera)*o move()" re,uisita u! Memento do ConstraintSolver 2 ConstraintSolver $ria e retorna o Memento 0inst3n$ia de SolverState1" $ontendo estruturas de dados ,ue des$re#e! o estado atual das e,ua)es e #ari/#eis internas do ConstraintSolver (ais tarde" ,uando o usu/rio desfi er a opera)*o" o editor en#ia de #olta o SolverState para o ConstraintSolver 4aseado na infor!a)*o do SolverState o ConstraintSolver !odifi$a suas estruturas internas para o estado anterior

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

5pli$abilidade:

6uando deseja+se sal#ar u! snapshot do estado 0ou parte do estado1 de u! objeto" de !odo ,ue ele possa ser restaurado para este estado" e! u! !o!ento futuro

7tili ar u!a interfa$e direta para obter o estado iria expor detal'es de i!ple!enta)*o e #iolar o en$apsula!ento do objeto

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

-strutura:

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

Parti$ipantes:

Memento 08ol#er8tate1:

5r!a ena o estado interno do objeto ori.inador. Pode ar!a enar so!ente o estado !9ni!o ne$ess/rio para a dis$reti a)*o do objeto I!pede o a$esso de outro objetos ,ue n*o seja! o ori.inador Mementos possue! duas interfa$es:

7!a restrita 0narrow1" utili ada pelo Caretaker" so!ente para passar o Memento para outros objetos 7!a a!pla 0wide1" utili ada pelo ori.inador" para a$essar todos os dados ne$ess/rios : restaura)*o do estado pr&#io

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

Parti$ipantes:

Originator 0Constraint8ol#er1:

Cria o Memento $ontendo o snapshot do estado interno atual 7sa o Memento para restaurar seu estado interno ; respons/#el pela $ustdia do Memento Nun$a opera o Memento ou exa!ina o seu $onte<do

Caretaker 0!e$anis!o de undo1:


INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

Colabora)es:

2 Caretaker soli$ita o Memento ao ori.inador" o !ant&! por u! te!po e ent*o o en#ia de #olta ao ori.inador

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

Conse,u=n$ias:

Preser#a os li!ites de en$apsula!ento:

2 Memento e#ita expor infor!a)es ,ue so!ente o ori.inador de#eria !anipular !as pre$isa! ser ar!a enadas fora do ori.inador Isola outros objetos de detal'es internos poten$ial!ente $o!plexos" preser#ando os li!ites do en$apsula!ento -! outras solu)es o ori.inador !anteria #erses de estados internos re,uisitados pelos $lientes Isto traria toda a responsabilidade de .eren$ia!ento deste ar!a ena!ento para o ori.inador 5o de$idir ,ue os $lientes .eren$iar*o o estado !ant&!+se o ori.inador si!ples

8i!plifi$a o ori.inador:

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

Conse,u=n$ias:

2 uso do Memento pode .erar altos $ustos:

5lto overhead pode ser .erado se o ori.inador ti#er de $opiar .randes ,uantidades de infor!a)*o para o Memento ou se os $lientes $ria! e retorna! Mementos para o ori.inador !uito fre,uente!ente 2 padr*o s & apropriado ,uando o en$apsula!ento e restaura)*o do estado do ori.inador t=! $usto baixo Pode ser dif9$il e! al.u!as lin.ua.ens .arantir ,ue so!ente o ori.inador ir/ a$essar o estado do Memento 2 Caretaker & respons/#el pela desalo$a)*o de Mementos por&! ele n*o sabe o ta!an'o do Memento

>efinindo as interfa$es narrow e wide:

Custos adi$ionais de $ustdia de Mementos:

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

I!ple!enta)*o:

8uporte da lin.ua.e!:

Para i!ple!entar as interfa$es narrow e wide a lin.ua.e! de pro.ra!a)*o de#eria" ideal!ente" suportar dois n9#eis de prote)*o est/ti$a:

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

I!ple!enta)*o:

8uporte da lin.ua.e!:

Para i!ple!entar as interfa$es narrow e wide a lin.ua.e! de pro.ra!a)*o de#eria" ideal!ente" suportar dois n9#eis de prote)*o est/ti$a:

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

I!ple!enta)*o:

5r!a enando !udan)as in$re!entais:

6uando os Mementos s*o $riados e de#ol#idos para o ori.inador" e! u!a se,u=n$ia pre#ista" o Memento pode ar!a enar so!ente a !udan)a in$re!ental do estado do ori.inador -x: $o!andos undoable pode! utili ar Mementos para .arantir ,ue $o!andos seja! restaurados para o seu estado anterior ,uando fore! desfeitos

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

Cdi.o exe!plo:

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

Cdi.o exe!plo:

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

Cdi.o exe!plo:

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

7sos $on'e$idos:

UniDraw >?lan 62C5

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

-emento

Padres rela$ionados:

Commands pode! utili ar Mementos para !anter o estado de opera)es re#ers9#eis Mementos pode! ser utili ados para itera)es

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

INF011 Padres de Projeto 21 Memento


"andro "antos Andrade
sandroandrade@ifba.edu.br Instituto Federal de $ducao% &i'ncia e Tecnologia da (a)ia e*artamento de Tecnologia $letro+$letr,nica Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas

INF011 Padres de Projeto Graduao Tecnolgica em Anlise e esen!ol!imento de "istemas "andro "# Andrade

Você também pode gostar