개발 알다가도 모르겠네요

Command Pattern 을 알아보자 본문

디자인패턴

Command Pattern 을 알아보자

이재빵 2021. 12. 11. 21:19
728x90

이벤트가 발생했을 때 실행될 기능이 다양하면서 변경이 필요한 경우 이벤트를 발생시키는 클래스의 변경없이 재사용

 

커맨드 패턴은 실행될 기능을 캡슐화함으로써 기능의 실행을 요구하는 호출자 클래스 (Invoker)

실제 기능을 실행하는 수신자 클래스 (Receiver) 사이의 의존성을 제거합니다.

따라서 실행될 기능의 변경에도 호출자 클래스를 수정없이 그대로 사용할 수 있도록 해줍니다.

 

 

Example - 만능 버튼 만들기

 

램프를 켜는 버튼

-Button 클래스: 버튼이 눌렸음을 인식하는 클래스

-Lamp 클래스: 불을 켜는 기능을 제공

 

 

  • 버튼이 눌렸을 때 램프를 켜는 대신에 다른 기능을 수행하려면? 버튼이 눌리면 알람을 시작시키려면?
  • 버튼이 눌렸을 때 수행되는 기능을 프로그램이 동작할 때 결정하려면?
  • 버튼이 처음 눌렸을 때는 램프를 켜고, 두 번째 눌렸을 때는 알람을 동작시키려면?

 

 

버튼이 눌렸을 때 수행될 기능을 캡슐화합니다.

-버튼은 수행될 기능을 캡슐화된 객체로서 전달 받음

-버튼이 눌리면 전달 받은 객체를 호출함으로써 구체적 기능을 수행

 

해결책

 

Receiver를 바꾸더라도 Invoker에는 영향을 주지 않는다.

 

 

'디자인패턴' 카테고리의 다른 글

Observer Pattern 을 알아보자  (0) 2021.12.13
Strategy Pattern과 Command Pattern 비교  (0) 2021.12.11
Strategy Pattern 을 알아보자  (0) 2021.12.11
Builder Pattern 을 알아보자  (0) 2021.12.10
Singleton Pattern 을 알아보자  (0) 2021.12.10