현재 SOLID를 알아 내려고 노력 중입니다. 따라서 Dependency Inversion Principle은 두 클래스가 직접이 아닌 인터페이스를 통해 통신해야 함을 의미합니다. 예 : class A
메소드가있는 경우 유형의 객체에 대한 포인터를 예상하면 class B
이 메소드는 실제로 유형의 객체를 기대해야합니다 abstract base class of B
. 이것은 열기 / 닫기에도 도움이됩니다.
내가 올바르게 이해했다면, 내 질문은 이것을 모든 클래스 상호 작용 에 적용하는 것이 좋은 습관 인지 아니면 레이어 측면에서 생각해야 합니까?
내가 회의적 인 이유는 우리 가이 원칙을 준수하기 위해 약간의 가격을 지불하기 때문입니다. 기능을 구현해야한다고 가정 해보십시오 Z
. 분석 후, 나는 기능은 결론 Z
기능으로 구성 A
, B
및 C
. 내가 만드는 외관 클래스 Z
, 즉 인터페이스를 통해, 클래스를 사용 A
, B
하고 C
. 나는 구현을 코딩을 시작하고 어떤 점에서 나는 작업이 실현 Z
실제로 기능 구성 A
, B
및 D
. 이제 C
인터페이스, C
클래스 프로토 타입 을 폐기하고 별도의 D
인터페이스와 클래스를 작성해야합니다. 인터페이스가 없으면 클래스 만 교체하면됩니다.
다시 말해, 무언가를 바꾸려면 1. 발신자 2. 인터페이스 3. 선언 4. 구현을 변경해야합니다. 파이썬 직접 결합 구현에서는 구현 만 변경해야합니다 .