관리 메뉴

caLAB

[개발] Behaviours Design Pattern - Strategy Pattern, State Pattern 본문

개발 공부/컴퓨터 과학

[개발] Behaviours Design Pattern - Strategy Pattern, State Pattern

도이(doi) 2022. 5. 7. 20:24
728x90

Strategy Pattern

SOLID 패턴의 open closed 패턴과 유사함.

런타임에 알고리즘을 selecting 하게 해줌. 

말을 걸어주는 함수가 Stragey pattern의 핵심. 팩토리 패턴으로 animal 생성

make speak() 함수 안에서는 특별한 if문 없이 animal 오브젝트 인터페이스가 함수 안으로 들어가서 그 오브젝트의 속성에 따라서 관련된 기능을 호출한다. make speak 함수는 Animal 인터페이스에 동물이 추가돼도 수정할 필요 없다. 확장에 대해서 open되어 있다. 

 

State Pattern

우리가 만들고자 하는 오브젝트의 상태가 있다면 사용할 수 있음.

state pattern을 사용하지 않은 신호등 표시

신호등 클래스를 정의. Traffic Light는 내부에 state 오브젝트를 가지고 있음. state 오브젝트는 신호등 내부의 상태를 나타내는 인터페이스가 됨. 그 상태는 '빨간불인 상태' '초록불인 상태'를 가지게 된다. 또한, 이 상태 오브젝트는 speak(), wait()라는 함수를 가짐. 

Strategy Pattern과의 차이점

Strategy Pattern에서 Animal의 상속을 받는 객체는 서로의 존재를 몰라도 상관없음. 하지만, State Pattern은 서로의 상태에 대해서 알고 있어야 됨. 

728x90
반응형
Comments