ariestamirra

memento

Aug 2nd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.97 KB | None | 0 0
  1.  <?php
  2. class BookReader
  3. {
  4.     private $title;
  5.     private $page;
  6.     function __construct($title_in, $page_in)
  7.     {
  8.         $this->setPage($page_in);
  9.         $this->setTitle($title_in);
  10.     }
  11.     public function getPage()
  12.     {
  13.         return $this->page;
  14.     }
  15.     public function setPage($page_in)
  16.     {
  17.         $this->page = $page_in;
  18.     }
  19.     public function getTitle()
  20.     {
  21.         return $this->title;
  22.     }
  23.     public function setTitle($title_in)
  24.     {
  25.         $this->title = $title_in;
  26.     }
  27. }
  28. class BookMark
  29. {
  30.     private $title;
  31.     private $page;
  32.     function __construct(BookReader $bookReader)
  33.     {
  34.         $this->setPage($bookReader);
  35.         $this->setTitle($bookReader);
  36.     }
  37.     public function getPage(BookReader $bookReader)
  38.     {
  39.         $bookReader->setPage($this->page);
  40.     }
  41.     public function setPage(BookReader $bookReader)
  42.     {
  43.         $this->page = $bookReader->getPage();
  44.     }
  45.     public function getTitle(BookReader $bookReader)
  46.     {
  47.         $bookReader->setTitle($this->title);
  48.     }
  49.     public function setTitle(BookReader $bookReader)
  50.     {
  51.         $this->title = $bookReader->getTitle();
  52.     }
  53. }
  54. // Client
  55. writeln('BEGIN TESTING MEMENTO PATTERN');
  56. writeln('');
  57. $bookReader = new BookReader('Core PHP Programming, Third
  58. Edition', '103');
  59. $bookMark   = new BookMark($bookReader);
  60. writeln('(at beginning) bookReader title: ' . $bookReader->getTitle());
  61. writeln('(at beginning) bookReader page: ' . $bookReader->getPage());
  62. $bookReader->setPage("104");
  63. $bookMark->setPage($bookReader);
  64. writeln('(one page later) bookReader page: ' . $bookReader->getPage());
  65. $bookReader->setPage('2005'); //oops! a typo
  66. writeln('(after typo) bookReader page: ' . $bookReader->getPage());
  67. $bookMark->getPage($bookReader);
  68. writeln('(back to one page later) bookReader page: ' . $bookReader->getPage());
  69. writeln('');
  70. writeln('END TESTING MEMENTO PATTERN');
  71. function writeln($line_in)
  72. {
  73.     echo $line_in . "<br/>";
  74. }
  75. ?>
Advertisement
Add Comment
Please, Sign In to add comment