Design Architecture/Design Pattern

9강 State Pattern

lipnus 2021. 8. 29. 14:38
반응형

1/10확률로 두배이벤트 기능을 넣고싶다

 

변하는 부분은 현재상태를 책임지는 객체에게 위임

처음거랑 기능적으로는 같지만 구조가 다름

각각의 State별로 Encapsulation되어 있음

OCP도 만족
Runtime에 state가 변할 경우 쓰면 된다

state가 증가할때마다 클래스가 늘어나는 단점이있음

 

전략패턴과 비슷

클래스 다이어그램상 차이는 없음

의도의 차이.

 

- State = State에 dependency가 있는 Behavior를 Encapsulation하기 위해서.

State Pattern이 없으면 Conditoin Block(if문)이 존나 생김

 

- Stragegy = 어떤 특정한 객체에 가장 적합한 전략을 연결해주고 Delegation해줌 / 전략변경 빈도는 State에 비해 낮음

Stragegy 없으면 상속을 세분화 해서 해결하려 했을 것.

 

필요할때 Create해도 되고, 아까 예제처럼 처음에 바로 만들고 레퍼런스를 만들어도 된다.

 

Requirement가 변하기 때문에 이걸 썼었다.

 

두개를 내준다!

 

기존 스테이트 중 바뀌어야 되는 부분

 

stragegy패턴과 유사

state pattern은 훨씬 더 잦은 빈도로 바뀐다.

 

 

반응형

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

11강 Factory method & Abstract Factory Patterns  (1) 2021.08.29
10강 Mediator Pattern  (0) 2021.08.29
8강 Iterator Pattern  (0) 2021.08.29
7강 Template Method  (1) 2021.08.29
6강 Observer Pattern  (0) 2021.08.29