프로그램을 작성하다보면, 객체간에 동적으로 결합이 필요한 경우가 많습니다. 객체간에 동적으로 결합/해제를 통해서 기능을 추가/제거 하는 것을 데코레이터 패턴이라고 합니다.


class LogDecorator
{
public:
	void Log(char *str, ...);
};

class Game
{
	LogDecorator *m_pLogDecorator;
public:
	void Start()
	{
		if(m_pLogDecorator)
			m_pLogDecorator->Log("Game::Start() ...");

		//게임시작처리
	}

	void End()
	{
		if(m_pLogDecorator)
			m_pLogDecorator->Log("Game::End() ...");

		//게임종료처리
	}

	void SetLog(LogDecorator *pLogDecorator)
	{
		m_pLogDecorator = pLogDecorator;
	}
};

Game클래스를 보면, LogDecorator 클래스가 결합되었을 때에만 로그를 기록하도록 되어있습니다. 


Game클래스는 LogDecorator 클래스를 통해서 기능이 추가/제거 되는데, 이처럼 동적으로 객체간의 결합을 통해 기능이 확장 되는 것을 데코레이터 패턴이라고 합니다.

'Software Engineering > Design Pattern' 카테고리의 다른 글

Reactor 패턴과 Proactor 패턴  (0) 2014.08.05
Design Pattern Quick Reference  (0) 2011.02.10
데코레이터 패턴 (Decorator)  (2) 2008.02.09
커맨드 패턴 (Command)  (0) 2008.02.09
플라이웨이트 패턴 (Fly Weight)  (0) 2008.02.09
프록시 패턴 (Proxy)  (0) 2008.02.09
Posted by 엘키 엘키

댓글을 달아 주세요

  1. Favicon of http://blog.naver.com/jun0683 BlogIcon 우주미아홍구 2008.10.03 16:53  댓글주소  수정/삭제  댓글쓰기

    감사히 퍼가겠습니다 -_-;;

    내용이 좋네욤 켈켈..

  2. Favicon of http://blog.naver.com/whitejopd BlogIcon 신사 2009.10.19 10:30  댓글주소  수정/삭제  댓글쓰기

    패턴 다 퍼갈께용.내용이 넘조아용^^

이전버튼 1 2 3 4 5 6 7 ··· 19 이전버튼

블로그 이미지
Software Engineer
엘키

공지사항

Yesterday31
Today29
Total1,605,483

달력

 « |  » 2020.8
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

글 보관함