이것은 사람들이 Liskov 대체 원칙을 위반하기로 결정한 전형적인 예입니다. 나는 그것을 강력히 권장하지 않지만 다른 해결책을 장려 할 것입니다.
- 아마도 작성중인 클래스가 인터페이스의 모든 멤버를 사용하지 않는 경우 인터페이스가 규정하는 기능을 제공하지 않을 수도 있습니다.
- 또는 해당 인터페이스에서 여러 작업을 수행 할 수 있으며 인터페이스 분리 원칙에 따라 분리 될 수 있습니다.
첫 번째 경우라면 해당 클래스에서 인터페이스를 구현하지 마십시오. 접지 구멍이 불필요하므로 실제로 접지에 연결 되지 않는 전기 소켓으로 생각하십시오 . 당신은 땅에 아무것도 꽂지 않고 큰 거래를하지 않습니다! 그러나 당신이 땅을 필요로하는 것을 사용하자마자, 당신은 장엄한 실패에 빠질 수 있습니다. 가짜 구멍을 뚫지 않는 것이 좋습니다. 따라서 클래스가 실제로 인터페이스가 의도 한 작업을 수행하지 않으면 인터페이스를 구현하지 마십시오.
다음은 Wikipedia에서 제공하는 몇 가지 간단한 정보입니다.
Liskov 대체 원칙 은 간단히 "사전 조건을 강화하지 말고 사후 조건을 약화시키지 마십시오"라고 간단히 표현할 수 있습니다.
보다 공식적으로, Liskov 대체 원칙 (LSP)은 1987 년 컨퍼런스 기조 연설에서 데이터 추상화 및 계층이라는 제목으로 Barbara Liskov에 의해 처음 도입 된 (강력한) 행동 서브 타이핑이라는 서브 타이핑 관계의 특정 정의입니다. 그것은 계층 구조에서 유형의 의미 론적 상호 운용성을 보장 하기 때문에 단지 구문 론적 관계 라기보다는 의미 론적 이다 .
동일한 계약의 서로 다른 구현 간의 의미 상호 운용성 및 대체 가능성을 위해서는 모두 동일한 행동을 수행해야합니다.
인터페이스 분리 원리 는 인터페이스가 응집력있는 세트로 분리되어야하므로 하나의 시설 만 원할 때 많은 이종 작업을 수행하는 인터페이스가 필요하지 않다는 아이디어를 말합니다 . 전기 소켓의 인터페이스를 다시 생각, 그것은 수 또한 자동 온도 조절 장치를 가지고 있지만, 그것은 더 열심히 전기 소켓을 설치하고 비 가열을 위해 사용 어렵게 만들 수 있습니다 만들 것입니다. 자동 온도 조절 장치가있는 전기 소켓과 같이 큰 인터페이스는 구현하기 어렵고 사용하기가 어렵습니다.
인터페이스 분리 원리 (ISP)는 클라이언트가 사용하지 않는 방법에 의존해서는 안된다고 명시하고 있습니다. [1] ISP는 매우 큰 인터페이스를 더 작고 더 구체적인 인터페이스로 분할하여 클라이언트가 관심있는 방법에 대해서만 알면됩니다.