합성은 부모-자식 관계라기보다 클라이언트-서버 관계에 더 가깝다. 스코프에서 재사용 코드의 메서드를 상속하는 대신 참조로 재사용 코드를 호출한다. 생성자에서 의존하는 클래스를 구성할 수도 있고, 더 좋은 것은 외부 종속성으로 사용할 수 있는 매개변수로 받을 수도 있다. 이처럼 관계를 좀 더 유연하게 변경할 수 있다.
매개변수로 받으면 구체적인 구현의 모의 버전을 주입하여 객체를 더 쉽게 단위 테스트할 수 있다는 추가적인 이점이 있다. 의존성 주입은 5장에서 더 자세히 알아볼 것이다.
상속 대신 합성을 사용하면 구체적인 참조 대신 인터페이스로 종속성을 정의해야 할 때도 있기 때문에 훨씬 더 많은 코드를 작성해야 한다. 하지만 동시에 종속성에서 벗어나 코드를 자유롭게 만들 수 있다. 합성을 사용하기 전에 장단점을 따져봐야 한다.