OOP/Design Pattern

[OOP] 커맨드 패턴(Command Pattern)

IT록흐 2022. 11. 13. 22:21
반응형

디자인 패턴이란?

객체지향설계 과정에서 발생하는 문제들을 해결하기 위한 패턴(Pattern)

 

문제 상황

 

 

RemoteController 객체 안 필드변수에 Light 객체의 주소가 담겨진다. 그리고 RemoteController의 버튼이 pressed되면 Light 객체의 turnOn 메소드가 호출되면서 Light의 불이 켜진다. RemoteController와 Light는 연관관계이고 강하게 결합되어 있다. 

 

그렇다면 만약 RemoteController로 다른 장치도 끄고 키려면 어떻게 해야할까?

 

 

해결책

RemoteController작동명령분리한다.

 

 

 

인터페이스 없이, 객체와 객체가 연결되면 두 객체는 강하게 결합한다. 이 상태에서 다른 장치의 작동 명령도 추가하면 RemoteController는 비대해지고 Light, TV, AirCondition의 로직이 바뀌어도 RemoteController의 로직을 바꾸어야 하는 사태가 만들어진다. 

 

그러나 만약 RemoteController의 명령을 인터페이스로 분리하고 명령(Command)와 RemoteController 사이를 setter함수로 연결한다면 RemoteController는 setter 함수로 객체만 받으면 될 뿐 어떤 로직도 변경되지 않는다. 

 

 

 

 

 

 

RemoteController과 Command를  ‘분리’하고 setter함수로 Command를 언제나 변경할 수 있다. (느슨한 결합)

 

 

 

 


 

 

참고자료

 

JAVA 객체지향 디자인 패턴 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

반응형