[영상후기] [10분 테코톡] 🍒 포모의 상태 패턴

박철현·2023년 7월 17일
0

영상후기

목록 보기
134/160

movie

  • 디자인 패턴 : 반복적으로 나타난 문제에 대해 해결한 경험 및 노하우를 축적하여 재이용하기 좋은 형태로 이름을 붙여 해법을 제시하는 패턴 양식

  • GOF 패턴 : 23가지 디자인 패턴을 목적에 따라 3가지로 분류

    • 생성 패턴 : 객체 생성과 관련된 패턴
    • 구조 패턴 : 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
    • 행위 패턴 : 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴 -> 상태패턴 여기에 속함
  • 상태패턴 : 객체 자신의 내부 상태에 따라 행위를 변경하도록 하는 패턴

    • 객체의 특정 상태를 클래스로 선언, 해당 상태에서 할 수 있는 행위들을 메서드로 정의
    • 인터페이스로 캡슐화 -> 클라이언트에서 인터페이스로 호출하는 방식
    • 이런 각 상태들을 조건문으로 하기에는 분기가 너무 많아짐
    • 각 상태(점프한 상태, 서있는 상태 등)을 클래스로 정의하고 그 상태에서 할 수 있는 메서드를 각각 정의
    • 현재 상태에 맞게 알맞은 이벤트를 실행하고 변화된 상태를 반환해주는 형태로 만들 수 있음
  • 효과

    • 상태에 따른 행동을 국소화하며 서로 다른 상태에 대한 행동을 별도의 객체로 관리
    • 한 상태에 종속된 행위(메서드) -> 새로운 상태나 규칙이 발생하면 오버라이드 하여 생성하면 됨
    • 새로운 상태가 추가되더라도 Context 코드가 받는 영향이 적다
    • 상태 전이 명확하게 만듦(입력에따라 다른 상태로 바뀌는 것)
      • 내부 데이터 값으로 상태 전이하면 명확하게 표현 안됨
    • 상태에 따른 동작을 구현한 코드를 수정하기 쉽다.(적용 전 : 각 메서드를 다 찾아서 수정 -> 상태를 표현하는 클래스만 수정하면 됨)
  • 상태패턴 vs 전략패턴

    상태패턴전략패턴
    코드 내 조건문 대체 가능상속 대체 가능
    상태 객체 내부 다음 상태 결정(다음 상태 자신이 정함)클라이언트(외부)에서 다음에 실행할 객체 지정
  • 상태패턴도 외부에서 상태 설정될 수 있음. 즉 상태기반 or 방법기반 고려

profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

2개의 댓글

comment-user-thumbnail
2023년 7월 17일

잘봤습니다. 좋은 글 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기

관련 채용 정보