구조화 코드 - 층별 봉인 및 특성별 봉인
3220 단어 소프트웨어 구조
1. 계층형 패키지
대부분의 애플리케이션에서 다음과 같은 Clean 아키텍처와 같은 코드 계층화를 지원합니다.com.awesome.project
.common
StringUtils
ExceptionUtils
.controllers
LocationController
PricingController
.domain
Address
Cost
CostFactory
Location
Price
.repositories
LocationRepository
PriceRepository
.services
LocationService
층포장이 비교적 유행하는 원인은 개발자가 기능이 비슷한 코드를 쉽게 발견할 수 있고 사람들이'사물을 분류하는 데 익숙하다'는 사상에 부합되기 때문일 수 있다. 그러나 층포장은 다음과 같은 문제를 가져올 수 있다.
com.awesome.project
.common
StringUtils
ExceptionUtils
.controllers
LocationController
PricingController
.domain
Address
Cost
CostFactory
Location
Price
.repositories
LocationRepository
PriceRepository
.services
LocationService
2. 특성(또는domain)으로 캡슐화
계층 분리 문제를 고려하여 우리는 특성이나domain에 따라 코드를 봉인할 수 있다. 예를 들어 다음과 같다.com.awesome.project.component
.location
Address
Location
LocationController
LocationRepository
LocationService
.platform
StringUtils
ExceptionUtils
.price
Cost
CostFactory
Distance
Price
PriceController
PriceRepository
이런 구조화된 코드는 OO원칙에 더욱 부합되고 업무의 높은 내적 집합을 할 수 있으며 층을 나누어 코드를 봉인하는 문제를 해결할 수 있을 뿐만 아니라 다음과 같은 장점을 가진다.
com.awesome.project.component
.location
Address
Location
LocationController
LocationRepository
LocationService
.platform
StringUtils
ExceptionUtils
.price
Cost
CostFactory
Distance
Price
PriceController
PriceRepository
com.awesome.project
.controller
LocationController
PriceController
.component
.location
Address
Location
LocationRepository
LocationService
.platform
StringUtils
ExceptionUtils
.price
Cost
CostFactory
Distance
Price
PriceRepository
Github 블로그 주소