2011-12-07 1 views
1

인터페이스 분리 원칙 (SOLID)을 사용해서는 안되는 시나리오의 예를 찾고 있습니다.인터페이스 분리 원칙은 언제 적용됩니까? SOA?

SOA의 컨텍스트에서 서비스에 대한 인터페이스의 경우는 내가 언급했지만 (설명하지 않은) 유일한 것입니다. 하지만 왜? 이 경우 인터페이스가 설계 상으로 뚱뚱해지기 때문입니까? SOA 법령에 의해?

ISP가 좋은 생각이 아닌 다른 상황이 있습니까?

미리 감사드립니다.

답변

1

SOLID는 좋은 원리이며, 내 아이디어는 당신이 공학을 과장했다고 생각할 때 적용하지 말아야한다는 것입니다! 예를 들어 비즈니스 계층에서 서비스 레이어의 클래스를 중심으로 ISP를 적용합니다. 비즈니스의 변화이기 때문에 수업을 변경하겠습니다. 새 구현을 만들지 않을 것입니다. (그리고 저는 Open/Close 원칙을 깨고, 비즈니스 변화이기 때문에 상관 없습니다!).

EDIT : 나는 또한 데이터 영역에 ISP를 적용하므로 실제로 모든 I/O 문제 (XML, SQL, 전자 메일 등)에 ISP를 적용합니다.

어디서나 ISP를 적용하면 수백 개의 인터페이스로 끝나고 디버깅/초기화에 악몽이 될 수 있습니다.

-2

구현이 두 개 이상인 경우 인터페이스를 사용하지 않습니다. 때가되면 나는 원리를 적용한다. 인터페이스에 대한 전체 아이디어는 여러 구현을하는 것입니다. 행운을 빕니다.

+0

인터페이스에 대한 아이디어는 구현을 모른 채 인터페이스로 이야기하는 것입니다. 인터페이스는 다른 구현에 함수를 적용 할 수있게 해주는 도구가 아니라 모든 클래스와 두 가지 방법 모두에 의존하지 않으려 고 할 때 개발하는 방법입니다. –

+0

-1 인터페이스에는 클래스에 1-1 매핑이 없습니다. imho 인터페이스는 클래스보다 작고 구체적인 문제를 해결해야합니다. 'IEnumerable '은 완벽한 예입니다. – jgauffin

+0

@remi 왜 당신은 단지 하나의 구현 만이 100 % 확신 할 때 인터페이스 뒤에 머물고 싶습니까? 인터페이스를 도입하고 추가 소음을 추가하면 어떤 이점이 있습니까? – mynkow

0

작은 인터페이스로 시작한 후 시간이 지남에 따라 도메인에 대해 더 많이 배우고 그 중 일부가 결합 된 것을 발견하면 ISP에 적용하지 않는 것이 좋습니다. 결합 된 것들은 실제 인터페이스 (Rule Of Three)에서 그들이 속해 있다는 것을 알 수 있기 때문에 더 적은 인터페이스로 리팩토링 될 수 있습니다. 동일한 컨텍스트 및 시나리오에서 사용됩니다. 관련 인터페이스에 대한 경험을 통해 정보를 바탕으로 결정을 내릴 수 있습니다. 도메인이 더 풍부 해지고 not being DRYtoo early이됩니다.

위의 조언에 문제가 있다면 은 실제로 작은 것으로 시작하여 큰 것으로 이동하여을 적용한다는 것입니다. 아마도 문제는 의문의 여지가 있을까요? : p

관련 문제