책의 예제인 BuckPal 예제의 송금하기 유스케이스 대신

현재 진행중인 Aircnc 프로젝트의 숙소등록 유스케이스로 살펴보겠습니다.


계층으로 구성하기

aircnc
- domain
   - Room
   - RoomPhoto
   - RoomRepository
   - RoomService
   - RoomPhotoService
- persistence
	 - RoomRepositoryImpl
- web
   - RoomController

기능으로 구성하기

aircnc
- room
   - Room
   - RoomPhoto
   - RoomRepository
   - RoomRegisterService
   - RoomPhotoUploadService
	 - RoomRepositoryImpl
   - RoomController

아키텍처적으로 표현력 있는 패키지 구조

aircnc
- room
	- adapter
			- in
					- web
							- RoomController
			- out
					- persistence
							- RoomPersistenceAdapter
							- JpaRoomRepository
					- s3
							- RoomPhotoPersistenceAdapter
							- RoomPhotoS3Client
	- domain
			- Room
			- RoomPhoto
	- application
			- RoomRegisterService
			- RoomPhotoUploadService
			- port
					- in
							- RoomRegisterUseCase
              - RoomPhotoUploadUseCase
					- out
							- CreateRoomPort  //영속성 계층을 위한 포트와 네이밍이 인상적이다
							- ImageUploadPort

 이게 맞나?

이게 맞나?