결합도 (coupling)
내용결합 (content coupling)
제일 높은 결합도 모델
컨텐츠 결합은 한 모듈이 다른 모듈의 코드를 사용할 때 발생한다고 말합니다.
이는 정보 숨기기를 위반하는 것으로, 기본 설계 개념입니다.
아래의 코드를 보시면 Builder class에 userAbInfoList를 AbCampaignSelector 에서 직접 참조 하고 있습니다.
내용 결합은 캡슐화에 따라 제거 할 수 있습니다.
public class AbCampaignSelector {
private List<Map<String, String>> userAbInfoList;
public AbCampaignSelector(Builder builder) throws EmptyException {
// 쿠키로 조회
if(CollectionUtils.isEmpty(builder.userAbInfoList) ) {
throw new EmptyException("ab Empty Exception!!");
}
userAbInfoList = builder.userAbInfoList;
}
public static class Builder{
private List<Map<String, String>> userAbInfoList;
public Builder(List<Map<String, String>> userAbInfoList) {
this.userAbInfoList = userAbInfoList;
}
public AbCampaignSelector build() throws EmptyException {
return new AbCampaignSelector(this);
}
}
}