[java Anti Pattern Series] 20.inappropriateintimacy
February 3, 2025
Inappropriate Intimacy
- 두 클래스가 긴밀하게 얽혀 있어 높은 의존성을 초래하는 경우를 의미한다.
- 코드 재사용성 감소, 복잡성 증가, 코드 유지 관리 및 테스트의 어려움이 발생
- 비공개 필드 및 메소드에 대한 직접 액세스, 내부 상태 공유, 클래스 간 과도한 메소드 호출 등 다양한 형태로 발생
원인
- 추상화 : 서로의 내부 정보에 직접 액세스 하는 것은 추상화 및 캡슐화가 부족하다는 것을 의미한다.
- 잘못된 디자인 결정 : 긴밀한 협력에 대한 영향도를 고려하지 않아서 발생
- 디자인 패턴에 대한 이해 부족 : 의존성 주입, 옵저버 등에 익숙하지 않을 경우 긴밀한 결합을 초래할 수 있다.
- 레거시
영향도
- 코드 재사용성 감소
- 복잡성 증가
- 테스트의 어려움
- 제한된 확장성
친밀성을 피하거나 완화하는 방법
- 디자인 패턴 적용 ( 파사드, 옵저버 등 )
- 동작을 캡슐화
- 인터페이스를 사용
- IOC를 구현
- 리팩토링