1. 인터페이스 분리 원리(ISP: Interface Segregation 원리)
정의: 단일 일반 인터페이스를 사용하는 것보다 여러 특수 인터페이스를 사용하는 것이 더 좋습니다. 또한 다음과 같이 말할 수도 있습니다. 단일 인터페이스를 구축하고, 비대해진 인터페이스를 구축하지 마세요.
ISP에 대한 두 가지 정의:
◇ “클라이언트가 사용하지 않는 인터페이스에 의존하도록 강요해서는 안 된다”
클라이언트는 필요하지 않은 인터페이스에 의존해서는 안 됩니다.
◇ “한 클래스의 다른 클래스에 대한 종속성은 가능한 가장 작은 인터페이스에 의존해야 합니다”
한 클래스의 다른 클래스에 대한 종속성은 가장 작은 인터페이스를 기반으로 해야 합니다. (클라이언트에서)
인터페이스와 역할: 인터페이스를 클래스가 제공하는 모든 메서드의 특성 모음으로 이해합니다. 이런 식으로 인터페이스의 분할은 유형의 분할을 가져옵니다. 따라서 인터페이스는 여러 역할을 제공하는 것이 아니라 하나의 역할만 나타내야 합니다.
인터페이스 오염: 소위 인터페이스 오염은 인터페이스에 불필요한 책임을 추가하는 것입니다. 인터페이스 오염은 유지 관리 및 재사용 문제를 가져옵니다. 가장 일반적인 문제는 오염된 인터페이스를 재사용하기 위해 불필요한 메서드를 구현하고 유지해야 한다는 것입니다. 따라서 클라이언트 프로그램을 분리해야 하며, 클라이언트 프로그램을 분리한다는 것은 인터페이스를 분리한다는 의미입니다.
별도의 인터페이스를 구현하는 방법:
일반적으로 인터페이스를 분리하는 방법에는 두 가지가 있습니다.
1) 위임을 사용하여 인터페이스를 분리합니다. (위임에 의한 분리)
요청을 다른 인터페이스의 구현 클래스에 위임하여 필요한 책임을 완료하는 것이 바로 어댑터 패턴(Adapter)입니다.
2) 다중 상속을 사용하여 인터페이스를 분리합니다. (다중 상속을 통한 분리)
이 방법은 필요한 책임을 완료하기 위해 여러 인터페이스를 구현합니다.
두 방법 모두 장점과 단점이 있습니다. 일반적으로 후자의 옵션을 먼저 고려하고 유형 변환이 포함된 경우 전자의 옵션을 선택해야 합니다.
이 기사는 CSDN 블로그에서 가져온 것입니다. 재인쇄할 때 출처를 표시하십시오: http://blog.csdn.net/scelong/archive/2009/12/18/5031030.aspx
-