- 두 대상(객체) 간의 연결, 대화, 소통을 돕는 중간역할을 한다. - 선언과 구현을 분리시킬 수 있게 한다. - 인터페이스 덕분에 B가 변경되어도 A는 안바꿀 수 있게 된다(느슨한 결합) - 개발 시간을 단축할 수 있다. - 변경에 유리한 유연한 설계가 가능하다. - 표준화가 가능하다 - 서로 관계없는 클래스들을 관계를 맺어줄 수 있다.