나는 일반적으로 ABC보다 순수한 인터페이스와 관련된 유지 관리 문제, 심지어 다중 상속에 사용되는 ABC조차도 훨씬 더 많이 직면했습니다. YMMV-dunno, 아마도 우리 팀은 그것들을 부적절하게 사용했을 것입니다.
즉, 실제 비유를 사용하면 기능과 상태가 완전히없는 순수한 인터페이스에 얼마나 많이 사용됩니까? USB를 예로 사용하면 상당히 안정적인 인터페이스입니다 (현재 USB 3.2에 있다고 생각하지만 이전 버전과의 호환성도 유지했습니다).
그러나 이것은 상태 비 저장 인터페이스가 아닙니다. 기능이 없습니다. 순수한 인터페이스보다 추상 기본 클래스와 비슷합니다. 실제로는 매우 구체적인 기능 및 상태 요구 사항을 가진 구체적인 클래스에 더 가까우며 유일한 추상화는 포트에 연결되는 유일한 요소가 대체 가능한 부분입니다.
그렇지 않으면 표준화 된 폼 팩터와 기능 요구 사항이 훨씬 느슨한 컴퓨터의 "구멍"일뿐입니다. 모든 제조업체는 해당 구멍이 무언가를 수행하도록 자체 하드웨어를 만들 때까지 자체적으로 아무것도하지 않습니다. 그것은 훨씬 더 약한 표준이되며 "구멍"과 그 기능에 대한 명세에 지나지 않지만 그 방법에 대한 중앙 규정은 없습니다. 한편 모든 하드웨어 제조업체가 기능과 상태를 "홀"에 연결하는 고유 한 방법을 찾은 후에는 200 가지 방법으로 끝날 수 있습니다.
그리고 그 시점에서 우리는 다른 제조업체와는 다른 문제를 일으키는 특정 제조업체를 보유 할 수 있습니다. 사양을 업데이트해야하는 경우 사양을 업데이트하고 테스트해야하는 완전히 다른 방법으로 200 개의 서로 다른 구체적인 USB 포트 구현이있을 수 있습니다. 일부 제조업체는 자체적으로 공유하는 사실상의 표준 구현 (해당 인터페이스를 구현하는 아날로그 기본 클래스)을 개발할 수 있지만 전부는 아닙니다. 일부 버전은 다른 버전보다 느릴 수 있습니다. 일부는 처리량이 더 좋지만 지연 시간이 더 길거나 그 반대 일 수 있습니다. 일부는 다른 것보다 더 많은 배터리 전력을 사용할 수 있습니다. 일부는 USB 포트와 작동해야하는 모든 하드웨어에서 작동하지 않거나 작동하지 않을 수 있습니다. 일부는 사용자에게 방사능 중독을 일으키는 경향이있는 작동을 위해 원자로를 부착해야 할 수도 있습니다.
그리고 그것이 제가 개인적으로 순수한 인터페이스로 찾은 것입니다. CPU 케이스에 대해 마더 보드의 폼 팩터를 모델링하는 것과 같이 의미가있는 경우도 있습니다. 폼 팩터 유추는 실제로 "홀"과 마찬가지로 거의 무 상태이며 기능이 없습니다. 그러나 나는 종종 팀이 그것을 모든 경우에서 우수하다고 생각하는 것은 큰 실수라고 생각합니다.
반대로, 팀이 너무 거대하지 않으면 실제로 하나의 중앙 표준이 아닌 200 개의 경쟁 USB 구현에 해당하는 유사체를 갖는 것이 바람직하지 않은 경우 인터페이스보다 ABC가 더 많은 사례를 인터페이스보다 더 잘 해결할 것이라고 생각합니다. 유지하십시오. 내가 근무했던 전 팀에서는 ABC와 다중 상속을 허용하기 위해 코딩 표준을 완화하기 위해 열심히 노력해야했으며 주로 위에서 설명한 이러한 유지 관리 문제에 대응했습니다.