란 복잡한 문제에서 핵심만 간추리는 작업을 말한다.
도메인
, 어댑터
, 인프라스트럭처
로 나뉜다. 도메인
레이어는 다시 엔티티(Entity)
와 유즈케이스(Use Case)
로 나뉜다.유즈케이스란 내가 만들고자하는 시스템을 사용하는 클라이언트가 그 시스템을 통해 하고자 하는 것을 말한다. ㅇ예를들면 '영화관'이라는 서비스가 있다고 가정해보면 영화관에서 손님(클라이언트)은 '영화 예매'를 할 수도 있고, '예매 취소'를 할 수도 있고, '환불', '팝콘구매' 등을 할 수도 있다. 이 때, 이런 '영화예매', '예매취소', '환불', '팝콘구매' 등이 '영화관'이라는 시스템에 사용자가 요청할 수 있는, '영화관'의 Use Case이다. Use Case는 Entity에 의존하는 동시에 상호작용한다. 앞에서 말했다시피 영화, 손님, 비용 등은 엔티티(Entity)
가 되는거고 손님이 영화를 예매
하는 것은 유즈케이스(Use Case)
가 된다.
해당 레이어의 소프트웨어는 시스템의 모든 유즈케이스를 캡슐화하고 구현하며 유즈케이스는 엔티티와의 데이터 흐름을 조정하고, 엔티티가 유즈케이스의 목표를 달성하도록 지시한다. 또 의존성 규칙에 의해 유즈케이스의 변경이 엔티티에 영향을 주어서는 안 되며 데이터베이스, UI, 프레임워크의 변경으로부터도 유즈케이스가 자유로워야 한다(영향을 받지 않아야 한다). 하지만, 애플리케이션의 조작에 대한 변경이 일어나면 유즈케이스에 영향을 미칠 수도 있다. 그리고 이들 또한 엔티티와 마찬가지로 바깥 계층에 대해 아무것도 알지 못한다. 다만, 이 계층에서는 바깥 계층에서 사용할 수 있는 Interface를 정의한다.
도메인 레이어
라고 부르는데 도메인 레이어는 누구와도 의존성을 이루지 않는 독립적인 레이어이다. 이 레이어에서는 비즈니스와 관련된 로직을 담당하며 앱에서 사용할 Model과 각각의 Business Logic 단위를 나타내는 Use Case, Use Case의 실질적인 구현을 담당하게 할 Repository 인터페이스로 구성이 되어있다.####::Adapter & Infrastructure
####::교차경계
양질의 설명 감사합니다