Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9087225
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 16, 20262026-06-16T21:39:35+00:00 2026-06-16T21:39:35+00:00

I am doing some research into the Memento Pattern and it seems that most

  • 0

I am doing some research into the Memento Pattern and it seems that most of the examples I have come across seem to be relatively similar (Saving a String into an array and restoring it when needed) now correct me if I am wrong but I believe the method that i just described is “Object Cloning” but what are the other ways of implementing the Memento Pattern?

From what I have also picked up on Serialization can be used but there seems to be a grey area with people saying that it violates the encapsulation of the object and isn’t a way to implement to Memento Pattern due to this.

So will anybody be able to shed some light on the ways to implement the pattern? My research has came up with a sort of mixture of all different things and has just made everything confusing.

Thanks

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-16T21:39:36+00:00Added an answer on June 16, 2026 at 9:39 pm

    The Java Collections framework defines Queue, which can help.

    Candidate code:

    public final class Memento<T>
    {
        // List of saved values
        private final Queue<T> queue = new ArrayDeque<T>();
    
        // Last entered value, whether it has been saved or not
        private T currentValue;
    
        // No initial state, ie currentValue will be null on construction, hence
        // no constructor
    
        // Set a value, don't save it
        public void set(final T value)
        {
            currentValue = value;
        }
    
        // Persist the currently saved value
        public void persist()
        {
            queue.add(currentValue);
        }
    
        // Return the last saved value
        public T lastSaved()
        {
            return queue.element();
        }
    
        // Return the last entered value
        public T lastEntered()
        {
            return currentValue;
        }
    }
    

    Notably missing from this code are many things, but are easily implementable:

    • revert to the last saved value;
    • no check for nulls;
    • T does not implement Serializable;
    • convenience method (like, add a value and make it the last saved state);
    • code is not thread safe!

    Etc.

    Sample code:

    public static void main(final String... args)
    {
        final Memento<String> memento = new Memento<String>();
    
        memento.set("state1");
        System.out.println(memento.lastEntered()); // "state1"
        memento.persist();
        memento.set("state2");
        System.out.println(memento.lastEntered()); // "state2"
        System.out.println(memento.lastSaved()); // "state1"
    }
    

    In effect: this is a braindead implementation which can be improved, but which can be used as a basis — extending it depends on your needs 😉

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm doing some personal research into text analysis, and have come up with close
I am doing some research into the Memento Pattern and I am generally new
I just started doing some research into Core Location and it seems that the
I am doing some research into geolocation in web pages. I have set up
So I have been doing some research into getting my UTF8 to print correctly.
I have been doing some research and this seems to be not possible unless
I've been doing some research into finally automating our Development builds and still have
This is a homework problem that I have. I have been doing some research
After doing some initial research into using Appfabric for caching, my understanding is that
Im doing some preliminary research into the problem stated above. I have read a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.