상태 패턴

ITKHJ·2023년 3월 15일
0

GoF의 디자인 패턴

목록 보기
10/16
post-thumbnail

상태 패턴

  • 특정한 상태에 따라 행동이 달라지는 객체들을 위한 패턴
    ex) 리모컨(TV가 꺼저 있냐 켜져 있냐에 따라 버튼의 동작이 달라짐)

※ 상태마다 다르게 적용하는 오퍼레이션일 때 상태 패턴을 적용하기가 적합하다

※ 리팩터링(refactoring)은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함'

상태(state) 패턴이 필요한 상황

  • 상태 마다 다른 코딩을 한 클래스 파일에 작성하게 되면 복잡해서 가독성이 떨어지기 때문에 이를 분리하여 쉽게 코드를 읽을 수 있다.
  • 상태마다 다르게 동작하는 오퍼레이션이 있을 때 상태 패턴을 적용하여 구분하여 사용함

OnlineCourse = Context와 같다

  • 상태 변경을 위한 메서드
  • context가 행동에 따라 달라지는 오퍼레이션들을 state를 통해 위임을 함(state)
  • 특정 상태에 따라 변경되는 것들은 실질적으로는 concreteState(=Draft, published, private)에서 구현함

상태 패턴의 장/단점

장점

  • 한 곳에 뭉쳐 있던 상태에 따른 여러가지 동작들을 개별 클래스로 옮겨서 관리할 수 있다.
  • 기존의 특정 상태에 따른 동작을 변경하지 않고 새로운 상태에 다른 동작을 추가할 수 있다.
  • 코드 복잡도를 줄일 수 있다.

단점

  • 복잡도가 증가한다.
  • 상태를 나눌 때 불필요한 경우에도 나누게될 수도 있다.
profile
모든 업무 지식 작성하자!

0개의 댓글