O padrão de projeto que permite, sem violar o encapsulamento, capturar e externalizar um estado interno de um objeto de maneira que o objeto possa ser restaurado para esse estado mais tarde é: