디자인 모델 의 행위 형 모델 ― 3.7 비망록 모델

<?php

	/**
	 * 3.7      
	 * 	  :
	 * 		           ,        
	 * 		   ,             ,  
	 * 		                  。
	 *
	 *   :
	 * 		1.    (Originator) 
	 * 			  :         Memento,  
	 * 				              ,  
	 * 				             。Originator
	 * 				         Memento     
	 * 				       。
	 * 		2.    (Memento) 
	 * 	 		  :    Originator       
	 * 	 			  ,    Originator      
	 * 	 			        Memento。      
	 * 	 			    ,Caretaker         
	 * 	 			    ,             
	 * 	 			   。Originator         
	 * 	 			  ,                
	 * 	 			    。
	 * 		3.    (Caretaker) 
	 * 			  :        Memento,     
	 * 				              。
	 *
	 * 	  :
	 * 		1.        ,           
	 * 		   
	 * 		
	 * 	  :
	 * 		1.                    
	 * 		             ,        
	 * 		         ,            
	 * 		                      
	 * 		    ,              。
	 * 		2.           。        
	 * 		                 ,    
	 * 		                     。
	 * 		3.               ,    
	 * 		        ,   ,         
	 * 		             。
	 *
	 * 	    :
	 * 		1.             ,      
	 * 		           ;
	 * 		2.                    
	 * 		    。
	 *
	 * 	
	 */

	//    
	class Originator{
		//       ,     
		private $state;
		public function setState($state){
			$this->state=$state;
		}
		public function getState(){
			return $this->state;
		}
		//     ,             
		//      Memento  
		public function CreateMemento(){
			return new Memento($this->state);
		}
		//     , Memento          
		public function setMemento(Memento $memento){
			$this->state=$memento->getState();
		}
		//    
		public function show(){
			echo '  :'.$this->state;
		}
	}
	//    
	class Memento{
		private $state;
		public function __construct($state){
			$this->state=$state;
		}
		public function getState(){
			return $this->state;
		}
	}
	//    
	//       
	class Caretaker{
		private $memento;
		public function setMemento(Memento $memento){
			$this->memento=$memento;
		}
		public function getMemento(){
			return $this->memento;
		}
	}

	//    
	//               
	$originator=new Originator();
	//       On
	$originator->setState('On');
	$originator->show();
	//               
	$caretaker=new Caretaker();
	$caretaker->setMemento($originator->CreateMemento());
	$originator->setState('Off');
	$originator->show();

	//      
	$originator->setMemento($caretaker->getMemento());
	$originator->show();
?>

좋은 웹페이지 즐겨찾기