관리 메뉴

엘키의 주절 주절

데코레이터 패턴 (Decorator) 본문

Software Engineering/Design Pattern

데코레이터 패턴 (Decorator)

엘키 엘키 2008.02.09 14:12

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


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
2 Comments
댓글쓰기 폼