문제

나는 디자인하는 새로운 시스템은 것이 인터페이스의 성장할 것입니다 시간이 지남에 따라 시스템입니다.What 는 것이 최상의 방법입니다 이것을 이름은 인터페이스

ISomethingV01
ISomethingV02
etc

고 내가 이렇

public interface ISomething{
      void method();
}

음을 추가하는 방법 2 그래서 이제 내가 무엇을 할까?

public interface ISomethingV2:ISomething{
      void method2();
}

또 동일한 다른 방법이 있을까?

도움이 되었습니까?

해결책

이상적으로,당신은 할 수 없이 변화하는 인터페이스는 매우 종종(모든 경우).해야 하는 경우를 변경하려면 인터페이스,재고 해야 그 목적이고 보면 원래 이름은 아직도 적용됩니다.

는 경우 당신은 여전히 느낌의 인터페이스가 변경됩니다,그리고 인터페이스의 변화가 작은(추가하기 항목)및 제어할 수 있 전체의 기본 코드에,당신은 그냥 인터페이스를 수정하고 해결하는 모든 컴파일에 오류가 있습니다.

하는 경우 변경된 방법에서 인터페이스가 사용되는 다음을 만들 필요가 있는 별도의 인터페이스(대부분이 다른 이름)이 지원하는 대용됩니다.

는 경우에도 당신은 결국 만들기 ISomething,ISomething2 및 ISomething3,소비자의 인터페이스는 힘든 시간을 파악 차이가 무엇인 사이의 인터페이스가 있습니다.해야 할 때 그들이 사용하는 ISomething2 해야 할 때 그들이 사용하는 ISomething3?그럼 당신은 프로세스에 대해 obsoleting ISomething 및 ISomething2.

다른 팁

나는 당신을 생각 overrusing 인터페이스가 있습니다.

Meyer 과 마틴이 우리에게 이렇게 말씀하셨습니다."열을 위한 확장자만 수정을 위해 폐쇄!"

다음 Cwalina(et al)반복:

에서 Design Guidelines...

일반적으로,클래스를 선호하는 구성 노출에 대한 추상화.의 주요 단점은 인터페이스 그들은 많은 보다는 보다 적게 가동 가능한 클래스에 올 때 허용 진화의 일으킬 수 있습니다.면송 인터페이스 설정의의 구성원이 고정니다.추가 사항 인터페이스를 끊을 기존 형식 를 구현하는 인터페이스입니다.

클래스를 제공하는 훨씬 더 유연합니다.구성원을 추가할 수 있습는 클래스 이미 발송되었습니다.로 방법은 추상적인(즉,오 으로 당신을 제공하는 기본 의 구현 방식),어떤 기존의 파생되는 클래스 계속 기능 변경되지 않습니다.

alt text

동의 Garo Yeriazarian, 변경하면 인터페이스는 심각한 결정입니다.또한,을 홍보하려는 경우 사용량의 새로운 버전의 인터페이스를 표시해야 합니다 이전 버전으로 사용되지 않습니다.습니다.NET 추가할 수 있습니다 Obsoleteattribute 는.

의 목적 인터페이스를 정의하는 추상적인 패턴에서 유형을 구현해야 합니다.

더 나은 것을 구현:

public interface ISomething

public class Something1 : ISomething
public class Something2 : ISomething

당신이하지 않는 이득에 아무것도 형태의 코드 재사용 또는 확장 가능한 디자인을 생성하여 다중 버전의 동일한 인터페이스입니다.

왜 사람이 목표이다.내가 생각하는 좋은 이름 지침 중요합니다.

필요하신 경우에는 호환성을 유지와 함께 이전.버전의 동일한 인터페이스 사용을 고려 유산입니다.필요할 경우를 소개하는 새로운 버전의 인터페이스를 고려해 다음 규칙:

를 추가하려고 하는 의미있는 접미사를 당신 인터페이스입니다.지 않을 경우 가능 을 만들고 간결한 이름을 추가하는 것이 좋 버전 번호입니다.

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