모든 소스코드의 경계는 반드시 outer에서 inner로 향해야 한다.
domain(=usecase& entity)은 infrastructure(=UI& DB& Framework)
저수준
➡️ inner고수준
으로 의존성을 가지게 된다고수준과 저수준은 추상화의 정도에 따라 분류될 수 있다. 추상화가 많이 되어 있을수록 고수준이라고 할 수 있다.
함수 이름을 통해서 구체적으로 하는 일을 추상화해서 나타낸다.방법: 인터페이스 안에 함수를 쓰는 것
예를들어 sendMessage라는 함수는 '메세지를 보내는 로직'정도로 해석되지 어떤 내용을 보내는지는 알수 없다. 이처럼 어떤 행위를 하는지 알지만 내용을 알지 못할 때 추상적이라고 말할 수 있다.
(추상화에는 3가지 유형 존재 - 과정 추상화 / 데이터 추상화 / 제어 추상화)
고수준(Use cases)이 저수준(Presenter)를 호출하는 경우
즉, 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺어 데이터를 활용하라는 것.