Closed pythonstrup closed 3 months ago
지금은 플라잉닥터에서는 hospitalJob이라는 인터페이스 아래, app, web 진료신청이 공존하는 형태네요! 예약과 오프라인 진료에서만 사용하고 있어서 말씀하신데로, 만약 인터페이스를 분리했더라면
@Override
public void webRequest(HospitalJobDto hospitalJobDto, MultipartHttpServletRequest multipartHttpServletRequest) {
}
이런 코드가 사라질 수 있지 않았을까 생각이 듭니다.
떠오른 아이디어
진료
라는 역할을 인터페이스로 추상화하고, 각각의 세부사항[예약, 오프라인, 온라인 그 외 여러 진료 프로세스]을 구현체로 만들어 사용했습니다.ApplicationEventPublisher
를 스프링이 어떻게 구현하는지 알게 되었어요.ApplicationContext
라는 인터페이스를 구현하는 구현체를 통해ApplicationEventPublisher
인터페이스가 구현됩니다.ApplicationContext
는 빈 탐색과 등록, 리소스 처리 등의 다양한 역할을 수행하는데요. 이벤트 발행을 위한 역할을ApplicationEventPublisher
를 인터페이스로 분리했기에 실제로 이벤트 관련 기능을 사용할 때 해당 기능만 따로 주입받아 사용할 수 있게 한 겁니다!Web 진료신청
이라는 특수한 단계가 있었습니다. (지금도 있는지 모르겠네요.)Web 진료신청
이라는 특수한 역할을 따로 떼어내어 인터페이스로 만들어 따로 구현했다면 더 좋았을 거란 생각이 들었어요!Web 진료신청
이 필요한 프로세스는 해당 인터페이스를 구현합니다. (기존 인터페이스와Web 진료신청
을 위한 인터페이스 2개를 구현)Web 진료
를 구현하지 않아도 되는 구현체는 기존의 인터페이스 하나만 구현합니다.결론
ApplicationContext
을 보니 역할이 여러 개인 객체가 있는 걸까? 하는 생각도 드네요?