함수를 매개변수로 사용하는 것의 장점 개발자가 더 이상 concreate type을 작성할 필요가 없어진다. 추상화된 정의를 통해 종속성을 다룬다. 인터페이스와 클래스 분리의 특징 사용자에게 클래스 계층 구조를 강제하지 않을 수 있다. (장점) 인터페이스만 제공하기 때문에 클라이언트 코드에서 활용할 수 있는 재사용 가능 코드를 제공하기 어렵다. (단점) 인터페이스 대신 델리게이트를 사용하는 이유 델리게이트가 타입을 구성하는 핵심 구성요소가 아니기 때문이다. 델리게이트는 메서드 중 하나로 간주되지 않는다. 함수를 매개변수로 사용하는 것 장점 알고리즘 자체와 알고리즘을 적용할 타입을 분리하는데 도움이 된다. 컴포넌트를 사용하는 측과 컴포넌트를 구현하는 측의 코드를 분리할 수 있다. 단점 추가 비용이 발생한다..