250x250
반응형
Notice
Recent Posts
Recent Comments
Link
BOID
[디자인 패턴] 상태 패턴이란? (2/2) (Swift) 본문
728x90
안녕하세요, HoonIOS입니다. :)
저번에는 간단하게 상태패턴에 대해 알아봤는데요, 이번에는 구조에 대해 알아보겠습니다.
상태패턴 구조
- 콘텍스트
- 상태에 대한 참조를 저장하고 모든 상태별 작업을 하는 곳
- 상태 인터페이스를 통해 상테 객체와 통신하며 새로운 상태 객체를 전달하기 위한 setter을 호출 - 상태
- 인터페이스로 상태별 메서드를 구현
- 이 메서드는 모든 상태에 대해 유효한 메서드이어야 하는데 그 이유는 상태에 따라 호출될 일이 없는 메서드들를 인터페이스로 구분하면 사이드 이펙트가 나올 가능성이 있기 때문이다. - 구상 상태
- 상태별 클래스로 상태 인터페이스에 따른 메서드들을 자체적인 구현을 제공합니다.
- 여러 상태에서 유사한 코드의 중복을 피하기 위해 어떤 공통 행동을 캡슐화하는 중간 추상 클래스들을 제공할수 있습니다.
- 상태에 따른 객체들은 콘텍스트에 대해 역참조할수 있고 이 참조를 통해 상태는 콘텍스트 객체에서 필요한 정보를 가지고 올수 있습니다
언제 적용할까요?
- 각 상태에 따라 다르게 행동하는 객체가 있고 상태가 많을때 사용하는게 좋고 상태별로 코드가 자주 변경될때 사용하면 좋아요,
즉. 새로운 상태를 추가하거나 기존 상태들을 독립적으로 변경하는데 쉬워서 유지 관리하기도 좋습니다. - 하나의 값에 따라 클래스의 행동하는 방식을 변경하는 조건문 늪들이 있을떄 사용하는게 좋습니다.
- 상태들에 따라 중복 코드 또는 조건문-기반 상태 머신의 천이가 많을때 사용하는게 좋습니다.
- 거대한 상태 조건문들이 추가될려고 할때 해당 패턴을 적용하는게 좋습니다.
지금까지 상태패턴에 대해 알아봤는데요, 상태에 따라서 다르게 동작을 하도록 할때 적용하는게 좋을것 같습니다.
반응형
'디자인 패턴 (Swift)' 카테고리의 다른 글
[디자인 패턴] 상태 패턴이란? (1/2) (Swift) (0) | 2023.06.10 |
---|---|
[디자인 패턴] 커맨드 패턴이란? (2/2) (swift) (0) | 2023.06.10 |
[디자인 패턴] 커맨드 패턴이란? (1/2) (Swift) (1) | 2023.05.30 |
Comments