티스토리 뷰
반응형
31장 웹은 세부사항이다.
UI와 애플리케이션 사이에는 추상화 가능한 또 다른 경계가 존재해야 한다. 애플리케이션의 업무 로직은 다수의 유스케이스로 구성되며, 각 유스케이스는 사용자를 대신해서 일부 함수를 수행하는 것으로 볼 수 있다. 각 유스케이스는 입력 데이터, 수행할 처리 과정, 출력 데이터를 기반으로 기술할 수 있고, 웹은 이와는 독립적으로 실행할 수 있도록 해야 한다.
32장 프레임워크는 세부사항이다.
프레임워크와 결합해서는 안된다. 결합도가 높아진다면 변경이 쉽지 않다. 적당한 거리를 두자. 프레임워크는 아키텍처의 바깥쪽 원에 속하는 세부사항으로 취급하자. 프레임워크가 아키텍처의 안쪽 원으로 들어오지 못하게 하라. 선택적으로 사용하자.
예를 들어 JAVA 스프링을 사용할 때에 @Autowired 어노테이션이 업무 객체 도처에 산재해서는 안된다. 업무 객체는 절대로 스프링에 대해 알아서는 안된다. 업무 객체보다는 main 컴포넌트에서 스프링을 사용해서 의존성을 주입하는 편이 낫다.....(?)
안 좋은 예 : https://stackoverflow.com/questions/15455878/how-to-autowire-business-objects-in-spring
좋은 예 : https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html
반응형
'괴발개발' 카테고리의 다른 글
[git] 로컬 브랜치로 리모트 다른 브랜치 덮어버리기 (0) | 2022.01.09 |
---|---|
[git] 로컬 브랜치 변경사항 다 버리고 원격 브랜치로 덮어쓰기 (0) | 2022.01.09 |
깃 커밋 추가 없이 마지막 커밋 수정하기 (git amend) (0) | 2021.12.15 |
[클린아키텍처|요약정리] 30장 데이터베이스는 세부사항이다. (0) | 2021.12.14 |
[우분투] /usr/bin/python3: No module named pip 해결하기 (0) | 2021.12.10 |
반응형