Click here to watch in Youtube : https://www.youtube.com/watch?v=ZjouanHQmdk
Click the below Image to Enlarge
Memento Design pattern - Implementation |
Memento Design pattern - Class Diagram |
LedTV.java
public class LedTV
{
private String size;
private String price;
private boolean usbSupport;
public LedTV( String size, String price, boolean usbSupport )
{
super();
this.size = size;
this.price = price;
this.usbSupport = usbSupport;
}
public String getSize()
{
return size;
}
public void setSize( String size )
{
this.size = size;
}
public String getPrice()
{
return price;
}
public void setPrice( String price )
{
this.price = price;
}
public boolean isUsbSupport()
{
return usbSupport;
}
public void setUsbSupport( boolean usbSupport )
{
this.usbSupport = usbSupport;
}
@Override
public String toString()
{
return "LedTV [size=" + size + ", price=" + price + ", usbSupport=" + usbSupport + "]";
}
}
Memento.java
public class Memento
{
private LedTV ledTV;
public Memento( LedTV ledTV )
{
super();
this.ledTV = ledTV;
}
public LedTV getLedTV()
{
return ledTV;
}
public void setLedTV( LedTV ledTV )
{
this.ledTV = ledTV;
}
@Override
public String toString()
{
return "Memento [ledTV=" + ledTV + "]";
}
}
Caretaker.java
import java.util.ArrayList;
import java.util.List;
/*
* Store Room
*/
public class Caretaker
{
private List<Memento> ledTvList = new ArrayList<Memento>();
public void addMemento( Memento m )
{
ledTvList.add(m);
System.out.println("LED TV's snapshots Maintained by CareTaker :" + ledTvList);
}
public Memento getMemento( int index )
{
return ledTvList.get(index);
}
}
Originator.java
/*
* Hall
*/
public class Originator
{
LedTV ledTV;
public LedTV getLedTV()
{
return ledTV;
}
public void setLedTV( LedTV ledTV )
{
this.ledTV = ledTV;
}
public Memento createMemento()
{
return new Memento(ledTV);
}
public void setMemento( Memento memento )
{
ledTV = memento.getLedTV();
}
@Override
public String toString()
{
return "Originator [ledTV=" + ledTV + "]";
}
}
MementoClient.java
public class MementoClient
{
public static void main( String[] args )
{
Originator originator = new Originator();
originator.setLedTV(new LedTV("42 inch", "60000Rs", false));
Caretaker caretaker = new Caretaker();
caretaker.addMemento(originator.createMemento());
originator.setLedTV(new LedTV("46 inch", "80000Rs", true));
caretaker.addMemento(originator.createMemento());
originator.setLedTV(new LedTV("50 inch", "100000Rs", true));
System.out.println("\nOrignator current state : " + originator);
System.out.println("\nOriginator restoring to 42 inch LED TV...");
originator.setMemento(caretaker.getMemento(0));
System.out.println("\nOrignator current state : " + originator);
}
}
Output
LED TV's snapshots Maintained by CareTaker :[Memento [ledTV=LedTV [size=42 inch, price=60000Rs, usbSupport=false]]]
LED TV's snapshots Maintained by CareTaker :[Memento [ledTV=LedTV [size=42 inch, price=60000Rs, usbSupport=false]], Memento [ledTV=LedTV [size=46 inch, price=80000Rs, usbSupport=true]]]
Orignator current state : Originator [ledTV=LedTV [size=50 inch, price=100000Rs, usbSupport=true]]
Originator restoring to 42 inch LED TV...
Orignator current state : Originator [ledTV=LedTV [size=42 inch, price=60000Rs, usbSupport=false]]
No comments:
Post a Comment