Guest User

Untitled

a guest
Jun 20th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. /**
  2. * Class representing an originator (instance where content will be saved).
  3. * @class
  4. */
  5. class Originator {
  6. /**
  7. * Create an originator.
  8. */
  9. constructor(content) {
  10. this._content = content;
  11. }
  12. /**
  13. * Get the originator content.
  14. * @return {array} The originator content value.
  15. */
  16. get content() {
  17. return this._content;
  18. }
  19. }
  20.  
  21. /**
  22. * Class representing a caretaker (instance where content will be saved).
  23. * @class
  24. */
  25. class CareTaker {
  26. /**
  27. * Create an careTaker.
  28. */
  29. constructor() {
  30. this._content = [];
  31. }
  32.  
  33. /**
  34. * Set the originator content.
  35. * @param {any} value - some new value to add
  36. * @return {array} updated caretaker content value.
  37. */
  38. setValue(value) {
  39. this._content.push(value);
  40. return this._content;
  41. }
  42.  
  43. /**
  44. * Get current caretaker content
  45. * @return {array} current caretaker content
  46. */
  47. getValues() {
  48. return this._content;
  49. }
  50.  
  51. /**
  52. * Return new instance of originator with current content
  53. * @return {Originator} originator instance
  54. */
  55. save() {
  56. return new Originator(this._content);
  57. }
  58.  
  59. /**
  60. * Restore caretaker content from originator instance
  61. * @param {Originator} - originator instance
  62. */
  63. restore(originator) {
  64. this._content = originator.content;
  65. }
  66. }
  67.  
  68. // ============================================================================
  69. // USAGE
  70. // ============================================================================
  71.  
  72. const caretaker = new CareTaker();
  73.  
  74. caretaker.setValue('First value');
  75. caretaker.setValue('Second value');
  76. caretaker.setValue('Third value');
  77. console.log(caretaker.getValues())
  78. // ['First value', 'Second value', 'Third value']
  79.  
  80. const originator = caretaker.save();
  81. console.log(originator.content)
  82. // ['First value', 'Second value', 'Third value']
  83.  
  84. caretaker.setValue('Some another value');
  85. console.log(caretaker.getValues())
  86. // ['First value', 'Second value', 'Third value', 'Some another value']
  87.  
  88. caretaker.restore(originator);
  89. console.log(caretaker.getValues());
  90. // ['First value', 'Second value', 'Third value']
Add Comment
Please, Sign In to add comment