문제

인터페이스 분리 법칙(ISP)는 많은 클라이언트가 특정 인터페이스보다 나은 하나의 일반적인 목적 인터페이스입니다.그것이 중요한 이유는 무엇입니까?

도움이 되었습니까?

해결책

ISP 상태:

클라이언트를 따라 달라집 는 방법에 그들은 사용하지 않습니다.

ISP 에 관한 중요한 특성- 응집력커플링.
관광의 구성 요소가 있어야 합니다 높게에 맞게 조정됩니다.그것은 코드 견고성을 향상 및 관리할 수 있습니다.

시행 ISP 당신에게 다음과 같은 보너스:

  • 응집력 -은 더 나은 이해도,견고성
  • 커플링 -은 더 나은 유지보수성,높은 저항의 변화

를 배우고 싶다면 소프트웨어에 대한 자세한 내용을 디자인 원칙을 복사 의 민첩한 소프트웨어 개발,원리,패턴 및 관행 책입니다.

다른 팁

인터페이스 분리는"I"에 단단한 원리,파고 전에 너무 깊이와 함께 첫 번째는,하자는 무슨이 설명하는 후자의 의미합니다.

솔리드려될 수 있는 설정의 최상의 방법과 권장 사항을 전문가에 의해 이루어집(의미들이 입증되기 전에)를 제공하기 위해서 신뢰할 수 있는 기초에서 우리가 어떻게 응용 프로그램을 설계.이러한 방법을 만들기 위해 노력하고 유지하기 쉽,확장,적응시키고 규모의 응용 프로그램.

에 주의를 기울여야 하는 이유는 단단한 프로그래밍이 가능한가요?

첫째,당신이 깨달아야 하지 않을 영원히 어디에 당신이 있습니다.우리가 사용하는 경우 표준과 잘 알려진 아키텍처,우리가 할 수 있는지 확인 우리의 코드를 쉽게 유지하여 다른 개발자는 우리 후,그리고 나는 당신을 원하지 않을 것과 거래하는 작업을 고정하는 코드를 적용되지 않는 모든 잘 알려진 방법론으로는 것은 매우 열심히 그것을 이해합니다.

인터페이스 분리를 원칙으로 합니다.

알아 우리가 무엇을 알고 있는 단단한 원칙들은 우리가 얻을 수 있으로 더 많은 세부사항에 대한 인터페이스 분리 원칙이지만,무엇이 정확하게 인터페이스 분리를 말한다?

"클라이언트를 구현하는 불필요한 방법 그들은 사용하지 않습니다"

이는 때때로 우리는 경향이 인터페이스의 많은 방법이 될 수 있는 좋은 정도,그러나 이 수 있게 학대하고 우리가 끝날 수 있습으로 구현하는 클래스 비어 있거나 쓸모없는 방법 하는 물론 추가 코드고 부담합니다.상상을 선언하는 많은 방법에서 하나의 인터페이스는 경우에,당신은 같은 시각 도구는 클래스를 구현하는 인터페이스 하는 것은 정말 필요 몇 가지의 방법은 다음과 같습니다:

enter image description here

에서 다른 한편으로는,당신이 제대로 적용 인터페이스 분리와 분할의 인터페이스 집합할 수 있습 나에게 확신을 구현하고 있는 그들만 필요하다:

enter image description here

하십시오!은 더 나은 방법입니다!을 적용하는 이 원리를 허용,당신은 낮은 연결을 보조하는 더 나은 유지 관리하고 높은 저항을 변경합니다.그래서 당신은 수 있습니다 정말을 활용하여 사용의 인터페이스를 구현하는 방법을 때 당신이 정말로 해야 합니다.지금의 리뷰 적은 추상적인를 들어,말,당신이 선언된 인터페이스라고 보고

public interface Reportable {

        void printPDF();
        void printWord();
        void printExcel();
        void printPPT();
        void printHTML();


}

고 있는 클라이언트에게만 내보내기 데이터에 엑셀 형식으로,인터페이스를 구현할 수 있습니다,하지만 당신만을 구현해야 excel 방법은?응답이 없이,당신은 코드는 구현에 대한 모든 방법은 있지 않은 경우에도 그들을 사용하려,이 발생할 수 있습니다 많은 쓰레기 코드 그러므로 코드을 유지하기 위해 열심히..

기억하는 간단하고 반복하지 않는 자신을 찾을 것입니다 당신은 이미 사용하여 이 원칙이 없고 있습니다.

간단하게 인터페이스는 어떤 하나의 클라이언트가 사용하고 제거하는 종속성을 그들은 그렇지 않으면 개발에서 인터페이스의 일부분이 그들이 필요로 하지 않는다.

이유 중 하나는 데 많은 인터페이스의 최소 금액과 함께 방법을 각각에 대해 보다 쉽게 구현할 수가 각 인터페이스를 구현합니다.큰 인터페이스하기 어려운.또한,를 사용하여 초점을 맞춘 인터페이스에서 시나리오를 만든 코드를 더 maintanable 기 때문에 당신이 볼 수 있는 면의 개체가 사용되는(예를 들어,야 IComparable 인터페이스는지 알 수 있습체가 사용되는 비교를 위해서 주어진 시나리오).

이 원칙적으로 제공하는 트윈 목적

  • 하 코드를 읽을 수 있고 관리할 수 있습니다.

  • 촉진 하나의 책임을위한 클래스(높은 응집).당연히 해야하는 이유는 클래스 메소드가 없는 행동에 영향을 미칩니까?왜 그냥 제거합니다.어 ISP 대

거기에 몇 가지 질문 디자이너가 요청해야합니다 우려와 함께하는 ISP 에

  • 무엇을 하나의 달성하는 ISP
  • 하려면 어떻게 분석하고 기존의 코드를 ISP 위반

이 토론 또한,나 또한 추가하는 것이 원칙이 없는'원칙'에서 엄격한 의미하기 때문에,특정 상황에서 적용하는 ISP 디자인 대신,홍보의 가독성을 할 수 있습니다 개체 구조물을 읽을 수 없게 쌓인과 함께 불필요한 코드.할 수 있습니다 잘 관찰하이에서 java.awt.이벤트 패키지

내 블로그에서 더: http://design-principle-pattern.blogspot.in/2013/12/interface-segregation-principle.html

ISP 은 중요합니다.

의 기본 아이디어 ISP:클라이언트를 따라 달라집에서는 사용 하지 않습니다.

이 원리가 될 것으로 보인 논리적이다.이상적으로 클라이언트 안을 구현하는 방법을 사용하지 않는 클라이언트.

아래를 참조하십시오 SE 질문에 대한 코드를 들어:

인터페이스 분리 원칙-프로그램의 인터페이스

장점:

  1. 유연성 :의 부재에서 ISP,당신은 하나의 일반적인 뚱뚱한 인터페이스와 많은 클래스를 구현하다.가정을 1 개의 인터페이스 그리고 50 클래스입니다.에 변경이 있을 경우에는 인터페이스에서,모든 50 클래스를 변경해야 자신의 구현합니다.

    ISP,당신이 나누는 일반적인 뚱뚱한 인터페이스를 정밀한 세분화 된 작은 인터페이스가 있습니다.의 변경이 있는 경우에 작은 세분화된 인터페이스 만의 클래스를 구현하는 인터페이스에 영향을 것입니다.

  2. 유지 관리 및 사용 편의성:이후 변경은 제한을 세분화된 인터페이스의 일반적인 사실 인터페이스 코드를 유지 보수가 쉽습니다.관련 코드가 더 이상의 부분을 구현하는 클래스입니다.

을 피하는 회귀분석의 노력을 때,하나의 클라이언트의 특정 또는 하나의 동작 특정을 변경합니다.이 있는 경우 결합의 모든 동작은 방법이 모든 인터페이스만 생각하는 방법에 대해 당신은 끝날 것이 테스트는 모든 조각의 코드가 모두 있고 전력소모가 많다고 하는 인터페이스,경우에도 단지 작은 변화가 일어났습니다.

대한 자세한 설명을 참조하십시오 인터페이스 분리 원칙을 문서

로버트 마틴의 종이 주제에는 설명의 언급은 덜 자주:

거꾸로 강제 적용으로 클라이언트에 따라 인터페이스가 있습니다.

는 경우 두 개의 클래스에 따라 달라집에서 직접 두 가지 방법의 세 번째 클래스에 가능성을 증가하는 변화의 첫번째 두 개의 클래스에 영향을 미칠 것입니다.

우리가 있는 세 개의 클래스: Red, Green, 고 Blue.

RedGreen 모두 따라 달라집 Blue, 지만,각각에 따라 달라는 다른 방법이다.즉 Red 에 따라 달라집 방법 중 하나 Blue 그러나 사용하지 않는 다른 방법이다.마찬가지로, Green 에 따라 달라집 Blue, 지만,단지 사용 방법 중 하나는,다른하지 않습니다.

의 위반 원칙에 RedGreen 기 때문에 각각에 따라 달라지는 클래스 Blue -지 사용하여 적어도 하나의 방법이 있습니다.

문제는 무엇이 잠재적으로 만들어야 할까요?

  • 나는 필요한 변경 Red, 고,나는 또한 변경 Blue 의 요구를 수용하기 위해 Red.
  • 나 변경하지 않은 특정 메소드 내에서 BlueGreen 에 따라,그럼에도 불구하고, Green 에 따라 달라집 Blue 가 변경된 Blue, 수있는 여전히 영향 Green.
  • 따라서,나의 변경 Red 에 영향을 줄 수 있는 가능성이 있을 Blue 기 때문에 그들은 나를 지도 변경하는 클래스를 둘 모두에 따라 달라집니다.

는"뒤에 힘입니다." 우리는 때로는 변경하기 때문에 클래스의 요구의 그것의 클라이언트입니다.는 경우에는 클래스가 다른 사용하는 클라이언트을 위해 그것이 다른 것을,우리는 위험에 영향을 주니다.

설명한 바와 같이,간단한 정의는 인터페이스의 분리는 원리입니다:

어떤 클라이언트 강제적이어야 하에 의존하는 방법을 사용하지 않.

사고 위의 지점에서 로버트 마틴의 종이,명백하는 많은 설명하는 ISP 에서 사실에 대해 얘기 다른 원칙이 있습니다.

  • 클래스 또는 인터페이스의 많은 방법은 바람직하지 않은,그러나지 않기 때문에 구체적으로 ISP.들을 위반하는 하나의 책임입니다.그러나 ISP 에 위반하지 않에서 큰 인터페이스 또는 큰 클래스에서는 클래스 에 따라 달라집 에 큰 인터페이스를 사용하지 않는 경우는 모든 방법입니다.를 사용하는 경우 그들은 모든 방법들을 통해 그것은 아직도 소리를 지저분하다,하지만 함께 할 수 없 ISP.
  • 인터페이스를 구현하는 클래스는지만 예외가 발생한 특정한 방법은 나쁘다,하지만 ISP,중 하나입니다.ISP 에 대해 클래스 따라 달라집 에서 인터페이스하지 않는 클래스 구현 인터페이스가 있습니다.

우리가 구글의"인터페이스 분리",가장 최고의 결과를 포함하는 코드 샘플을 보여주는 클래스 하지 않는 완전히 구현하는 인터페이스하지 않은 지점의 ISP.일부는 심지어 다시 원리:

인터페이스 분리 원칙국는 클라이언트를 구현하는 인터페이스을 사용하지 않는 사용자

...하지만 그 원칙으로 하고 있습니다.정의 종이 언급한 문제로 부작용을 위반하는 ISP 에,그러나 나는 그들은 Liskov 대체 위반입니다.

또한,때마다 새로운 인터페이스에 추가하는 기본 클래스,인터페이스이어야 구현(거나 허용하는 기본값)에서 파생됩니다.실제로,관련된 연습은 추가 이러한 인터페이스를 기반으로 클래스 nil 가수가 아닌 순수한 가상 기능특히 그래서 파생된 클래스의하지 않은 부담으로 구현해야 합니다.우리가 배운 것에서 두 번째 문이 열,이러한 연습 을 위반하 Liskov 대체 원칙(LSP)도 유지 보수와 재사용 문제입니다.

더 무엇을 말하는 클라이언트 안 구현하는 방법을 사용하지 않습지도 않습니다.이 클라이언트 의 인터페이스를 구현하지 않는 그것의 방법이 있습니다.

내가 의도하지 않 pompously 인용하는 종이의 경우 거룩한 영장 또는 무언가이다.하지만 만약 우리가 사용하는 이름의 원리를 설명한 문서의(이름의 문서에서 자신)우리는 것도 고려해야 합니다 실제 정의에 설명이 포함된 문서입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top