프록시 패턴의 현대화 예

Image 클래스

  • 로딩 상태를 보여주는 메서드 추가
    • load() 메서드 추가
      • 외부에서 로드하라고 동작 지시할 수 있음
      • 내부에 캐시 로직이 있음
      • 생성 시 로드 되는 것도 아니고, 그릴 때 로드되는 것도 아니고, 외부에서 호출 시 로드
      • 즉시 로딩 X, 지연 로딩 X, 요즘 방법 O
    • unload() 메서드
      • 마찬가지
    • draw() 메서드는 모두 로딩됐다는 가정하에 호출
      • 이전에는 draw() 메서드 호출 시 지연 로딩 했음

새로 추가한 멤버 함수는 클라이언트를 위함

  • 클라이언트는 로딩 상태를 확인하고, 로딩도 직접 제어할 수 있음
    • 이렇게 상태에 따라 개체를 사용하는 방식을 상태머신이라고 부름

멤버 변수로 이 로딩 스크린에 필요한 이미지들을 가짐

  • 직접 이미지를 가지는게 아니라, 이미지 키 같은거로 가지고 있다고 생각하면 됨

update() 메서드를 필요한 이미지 멤버 변수의 크기가 0이 될 때까지 반복 호출

  • 필요한 이미지를 모두 로딩했으면 상태관리자(스택 기반)에서 이 로딩 스크린 개체를 제거
  • 이미지를 로딩할 때 마다 requiredImages 멤버 변수에서 0번 인덱스의 이미지 제거

반드시 캡슐화가 좋은건 아닌 사례

  • 외부에서 명확히 알 수 있도록 하는게 좋을 수도 있음

0건의 항목