PopupController
1. 특정 팝업을 네이밍에 맞는 리소스 경로로 부터 꺼내와 캔버스 위치에 인스턴스한다.
2. 인스턴스할 캔버스 위치를 포지셔닝하고 오픈 유무확인 및 객체를 Destroy 한다.
BasePopup
1. 모든 팝업은 베이스 팝업을 상속한다.
2. 베이스 팝업에는 Open/Close를 할 때 블러효과와 애니메이션 연출을 담당하며
3. 기본적인 Open/Close 또는 특정 버튼 액션에 대하여 이벤트 호출을 삽입할 수 있도록 설계되어 있다.
팝업 오픈(초기화)를 진행하는 메서드는 OpenPopup() 이며 가상함수로써 상속 받은 자식 클래스에서 이 메서드를 오버라이드하여 커스텀화 할 수 있게 한다.
OpenPopup()은 이후 팝업 버튼 액션에 대한 구현 타입에 따라 2가지 타입(오버로딩)으로 분류된다.
# 버튼 액션에 대한 구현 타입 2종류
1. 특정 UI 팝업 클래스 내부에 개별 버튼에 대한 이벤트 호출을 작성할 수 있도록 할 것
-> 팝업 내부가 어느정도의 의미와 복잡성을 띄는 경우, 사용자는 그 특정 팝업 클래스의 설계 코드를 보고 구현 내용을 이해할 것이므로
팝업 클래스 내부에 이벤트에 대한 코드 가시성을 확보해야한다.
-> 또한 팝업이 닫혔을 때 받는 이벤트 로직에 이해 관계가 호출 시점과 팝업 클래스 내부 두군데 모두에 관련성을 가질 때
2. 외부에서 UI 팝업 오픈 시 함수 호출 시점에 미리 각 버튼 액션에 대한 확인 이벤트 호출을 작성할 수 있도록 할 것
-> 팝업 내부에 복잡한 UI 내용을 담고 있지 않고 단지 각 버튼에 대한 다른 진행 절차 플로우 용도로만 사용되는 경우
-> 이 경우 함수 호출 시점에 진행되는 코드 구현 내용이 파악 되는 것이 중요하므로 사용자는 그 팝업 클래스 내부의 작성 내용을 살펴 볼 필요가 없어야 한다.
팝업 컨트롤러 (PopupController)
베이스 팝업 (BasePopup)