합성
- 합성은 개별 객체 간의 상호 작용
- 합성 = has-a (ex: 자동차에 핸들이 포함된다.)
- 시스템과 자식 시스템을 독립적으로 구축할 수 있다.
- 즉, 독립적으로 테스트하고 유지보수할 수 있다.
- 복잡하지만 안정된 시스템은 보통 위계구조라는 형태를 취하는데, 각 시스템은 더 단순한 하부 시스템을 사용해 구축되며, 각 하부 시스템은 여전히 그보다 더 단순한 하부 시스템으로부터 구축된다.
- 안정적이면서도 복잡한 시스템은 거의 다 분해해 볼 수 있다.
- 복잡하지만 안정된 시스템은 거의 항상 서로 다른 조합으로 배열된 몇 가지 종류의 자식 시스템으로만 합성된다.
- 작동 중인 안정 시스템은 거의 항상 작동해 왔던 단순한 시스템에서 발전했다.
- 결합, 응집이라는 두 가지 유형의 합성 방식이 있다.
- 객체를 서로 의존하지 않게 하는 편이 좋다. (DDD 식으로 도메인을 사용해서 의존성을 분리하자)
응집
- 복합 객체가 그 밖의 객체들로 구성되어 있음
- 복합 객체가 하나의 객체를 구성함
결합
- 한 객체가 그 밖의 객체들로부터 서비스를 받음
- 서비스들이 별개로 이뤄진다
카디널리티