その先にあるもの…

observer 본문

프로그래밍/패턴

observer

specialJ 2014. 4. 7. 17:23


Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically. 





namespace pattern
{
	
	class Subject
	{
		private List m_Observer;
		virtual public void Add( Observer o)
		{
			m_Observer.Add( o );
		}
		
		virtual public void Del( Observer o)
		{
			m_Observer.Remove( o );
		}
		
		virtual public void notify()
		{
			for( int i = 0; i < m_Observer.Count; i++ )
			{
				m_Observer[i].notify( this );
			}
		}
			
		public Subject()
		{
			m_Observer = new List();
		}
	}
	
	class mainCharacter : Subject
	{
		int hp = 100;
		int mp = 100;
		
		public int HP { get{ return hp; } set{ hp = value; notify();} }
		public int MP { get{ return mp; } set{ mp = value; notify();} }
		
	}
	
	class Observer
	{
		public Observer()
		{}
		
		public virtual void notify( Subject s) {}
	}
	
	class HP : Observer
	{
		public override void notify(Subject s)
		{
			mainCharacter character = (mainCharacter)s;
			Console.WriteLine( character.HP); 
		}
	}
	
	class MP : Observer
	{
		public override void notify(Subject s)
		{
			mainCharacter character = (mainCharacter)s;
			Console.WriteLine( character.MP); 
		}
	}
	
	class MainClass
	{
		public static void Main (string[] args)
		{
		
			mainCharacter character = new mainCharacter();
			
			HP hp = new HP();
			MP mp = new MP();
			
			character.Add( hp );
			character.Add( mp );
					
			character.HP = 70;
			
		}
	}
}



도움 : http://www.dofactory.com/Patterns/PatternObserver.aspx#_self1





'프로그래밍 > 패턴' 카테고리의 다른 글

stragy패턴  (0) 2015.04.09
State 패턴  (0) 2015.04.07
Decorator  (0) 2014.05.22
Comments