1. 특정 클래스에서 객체 생성
객체를 생성할 때 클래스 이름을 명시하면 어떤 특정 인터페이스가 아닌 어떤 특정 구현에 종속됩니다.
적용 패턴: 추상 팩토리, 팩토리 메서드, 원형
2. 특정 연산에 대한 의존성
특정한 연산을 사용하면, 요청을 만족하는 한 가지 방법에만 메이게 됩니다.
적용 패턴: 책임 연쇄. 명령
3. 하드웨어와 소프트웨어 플랫폼에 대한 의존성
기존에 존재하는 시스템 인터페이스와 응용프로그램 프로그래밍 인터페이스는 소프트웨어 및 하드웨어 플랫폼 마다 다릅니다.
적용 패턴: 추상 팩토리, 가교
4. 객체의 표현이나 구현에 대한 의존성
사용자가 객체의 표현 방법, 저장 방법, 구현 방법, 존재의 위치에 대한 모든 방법을 알고 있다면 객체를 변경할 때 사용자도 함께 변경해야 합니다.
적용 패턴: 추상 팩토리, 가교, 메멘토, 프록시
5. 알고리즘 의존성
알고리즘 자체를 확장할 수도, 최적화할 수도, 다른 것으로 대체할 수도 있는데, 알고리즘에 종속된 객체라면 알고리즘이 변할 때마다 객체도 변경해야 합니다.
적용 패턴: 빌더, 반복자, 전략, 템플릿 메서드, 방문자
6. 높은 결합도
높은 결합도를 갖는 클래스들은 독립적으로 재사용하기 어렵습니다.
적용 패턴: 추상 팩토리, 가교, 책임 연쇄, 명령, 퍼사드, 중재자, 감시자
7. 서브클래싱을 통한 기능 확장
서브클래싱으로 객체를 재정의하는 것은 쉬운 일이 아닙니다.
적용 패턴: 가교, 책임 연쇄, 장식자, 감시자, 전략
8. 클래스 변경이 편하지 못한 점
가끔 클래스를 변경하는 작업이 그렇게 단순하지 않을 때가 많습니다.
적용 패턴: 적응자, 장식자, 방문자
댓글