2010-05-11 2 views

답변

9

아니요. 인터페이스는 구현과 동작을 구분하여 인터페이스의 클라이언트에 영향을 미치지 않고 후자를 스왑 아웃 할 수 있습니다.

도메인 개체에 다른 구현이 필요하지 않은 경우 인터페이스가 필요하지 않습니다. 동적 프록시 생성이나 측면 또는 구현 변경이 필요한 경우에만 소개하십시오.

+1

+1 어디서나 인터페이스를 사용하기가 너무 쉽기 때문에 +1. 말하자면 어디에서나 '극소수의 메소드'를 사용해야하거나 Customer 객체의 생성자가 비즈니스 규칙을 적용해야한다면 인터페이스를 추출 할 준비가되어 있어야합니다. 당신은 다른 클래스를 테스트하기 위해 유효한 concrete Customer 인스턴스를 생성하지 않아도됩니다. –

+3

인터페이스도 버전 문제에 악명이 높습니다. 특별히 인터페이스를 정의 할 필요가 없다면하지 마십시오. – Will

1

이전의 의견에 동의하지 않습니다 ... Inversion of Control (IoC) 및 Dependency Injection과 같은 패턴과 결합하면 서로 간의 레이어를 훨씬 쉽게 분리 할 수 ​​있습니다. 이것은 Unit Testing, Mocking을 단순화하고 느슨하게 결합 된 아키텍처로 이어질 수 있습니다. 인터페이스를 사용하지 않아도 클래스를 봉인하지 않고 멤버를 가상으로 만들면 모의하고 프록시를 생성 할 수 있습니다. 마지막으로 인터페이스를 사용하면 모든 클래스와 관련된 가정을 삭제할 수 있습니다. 하나의 구체적인 구현체이며 인터페이스 정의가 나타내는 계약에 중점을 둡니다.

관련 문제