인터페이스 분리 원칙 (SOLID)을 사용해서는 안되는 시나리오의 예를 찾고 있습니다.인터페이스 분리 원칙은 언제 적용됩니까? SOA?
SOA의 컨텍스트에서 서비스에 대한 인터페이스의 경우는 내가 언급했지만 (설명하지 않은) 유일한 것입니다. 하지만 왜? 이 경우 인터페이스가 설계 상으로 뚱뚱해지기 때문입니까? SOA 법령에 의해?
ISP가 좋은 생각이 아닌 다른 상황이 있습니까?
미리 감사드립니다.
인터페이스 분리 원칙 (SOLID)을 사용해서는 안되는 시나리오의 예를 찾고 있습니다.인터페이스 분리 원칙은 언제 적용됩니까? SOA?
SOA의 컨텍스트에서 서비스에 대한 인터페이스의 경우는 내가 언급했지만 (설명하지 않은) 유일한 것입니다. 하지만 왜? 이 경우 인터페이스가 설계 상으로 뚱뚱해지기 때문입니까? SOA 법령에 의해?
ISP가 좋은 생각이 아닌 다른 상황이 있습니까?
미리 감사드립니다.
SOLID는 좋은 원리이며, 내 아이디어는 당신이 공학을 과장했다고 생각할 때 적용하지 말아야한다는 것입니다! 예를 들어 비즈니스 계층에서 서비스 레이어의 클래스를 중심으로 ISP를 적용합니다. 비즈니스의 변화이기 때문에 수업을 변경하겠습니다. 새 구현을 만들지 않을 것입니다. (그리고 저는 Open/Close 원칙을 깨고, 비즈니스 변화이기 때문에 상관 없습니다!).
EDIT : 나는 또한 데이터 영역에 ISP를 적용하므로 실제로 모든 I/O 문제 (XML, SQL, 전자 메일 등)에 ISP를 적용합니다.
어디서나 ISP를 적용하면 수백 개의 인터페이스로 끝나고 디버깅/초기화에 악몽이 될 수 있습니다.
구현이 두 개 이상인 경우 인터페이스를 사용하지 않습니다. 때가되면 나는 원리를 적용한다. 인터페이스에 대한 전체 아이디어는 여러 구현을하는 것입니다. 행운을 빕니다.
작은 인터페이스로 시작한 후 시간이 지남에 따라 도메인에 대해 더 많이 배우고 그 중 일부가 결합 된 것을 발견하면 ISP에 적용하지 않는 것이 좋습니다. 결합 된 것들은 실제 인터페이스 (Rule Of Three)에서 그들이 속해 있다는 것을 알 수 있기 때문에 더 적은 인터페이스로 리팩토링 될 수 있습니다. 동일한 컨텍스트 및 시나리오에서 사용됩니다. 관련 인터페이스에 대한 경험을 통해 정보를 바탕으로 결정을 내릴 수 있습니다. 도메인이 더 풍부 해지고 not being DRYtoo early이됩니다.
위의 조언에 문제가 있다면 은 실제로 작은 것으로 시작하여 큰 것으로 이동하여을 적용한다는 것입니다. 아마도 문제는 의문의 여지가 있을까요? : p
인터페이스에 대한 아이디어는 구현을 모른 채 인터페이스로 이야기하는 것입니다. 인터페이스는 다른 구현에 함수를 적용 할 수있게 해주는 도구가 아니라 모든 클래스와 두 가지 방법 모두에 의존하지 않으려 고 할 때 개발하는 방법입니다. –
-1 인터페이스에는 클래스에 1-1 매핑이 없습니다. imho 인터페이스는 클래스보다 작고 구체적인 문제를 해결해야합니다. 'IEnumerable'은 완벽한 예입니다. –
jgauffin
@remi 왜 당신은 단지 하나의 구현 만이 100 % 확신 할 때 인터페이스 뒤에 머물고 싶습니까? 인터페이스를 도입하고 추가 소음을 추가하면 어떤 이점이 있습니까? – mynkow