BOID

[디자인 패턴] 상태 패턴이란? (1/2) (Swift) 본문

디자인 패턴 (Swift)

[디자인 패턴] 상태 패턴이란? (1/2) (Swift)

HoonIOS 2023. 6. 10. 19:58
728x90

안녕하세요, HoonIOS입니다. :)

이번에는 패턴중에 하나인 상태패턴 공부한것에 대해 정리 할려고 합니다.

상태패턴의 정의에 대해 먼저 살펴보겠습니다.

 

상태패턴 정의

상태 패턴은 객체의 내부 상태가 변경 될때 해당 객체가 그 상태에 알맞는 행동을 할수 있도록 변경해주는게 행동 디자인 패턴입니다.

 

예를들어 어느 한 책을 출판한다고 했을때 출판하기 까지 초안, 검토, 출판 이렇게 세가지 형태로 크게 나눈다고 한다고 하면 각 상태를 객체에서 상태에 따라 분류하여 동작하도록 처리해주면 됩니다.

즉 아래와 같은 방식을 살펴 보겠습니다.

 

상태 패턴 방식

  • 위 코드는 객체 내에서 자체적으로 상태에 따라 코드를 구현하는 대신 현재 상태를 나타내는 상태 객체중 하나에 대한 참조를 저장하고 모든 상태에 관련된 작업을 Document 객체에 위임하는것입니다.
  • 콘택스트의 상태를 전환하려면 호라성 상태 객체를 다른 객체로 바꿔야 합니다. 위 changeState에 새로운 객체를 위임한것처럼 바꾸는 방식입니다.
  • 이 방식의 가장 큰 장점은 각 상태들은 서로 인식하고 다른 상태로 천이 할수 있습니다.
  • 콘텍스트는 모든 상태별 작업을 위임하는곳입니다.

 

우선 간단하게 상태 패턴이란 무엇인가에 대해 알아봤는데 다음에는 구조에 대해 좀더 자세히 살펴보겠습니다.

반응형
Comments