add_first (), add_last (), add_after (), remove_first (), remove_last () 및 remove ()와 같은 함수가있는 LinkedList 클래스가 있습니다.
이제 push (), pop (), peek () 또는 top ()과 같은 기능을 제공하는 클래스 스택이 있으며 이러한 메소드를 구현하기 위해 LinkedList 클래스 메소드를 확장합니다. 이것이 Liskov 대체 원칙을 위반합니까?
예를 들어, 링크 된 목록의 n 번째 위치에 노드를 추가하려면 add_after () 사례를 고려하십시오. 기본 클래스에서는 수행 할 수 있지만 Stack 클래스에서는 수행 할 수 없습니다. 여기에서 사후 조건이 약화되거나 add_after () 메소드를 수정하여 스택 맨 위에 추가합니까?
또한 위반이 아니라면 이것이 나쁜 디자인입니까? 그리고 LinkedList 클래스를 사용하여 Stack 기능을 어떻게 구현 하시겠습니까?
LinkedList
하시겠습니까? "상속보다 컴포지션 선호"- LinkedList
스택 클래스 내부에 있을 수는 있지만 실제로는 확장하지 않습니까?
LinkedList
이 장면 뒤에서 무거운 리프팅 (구성)을 수행 하는 개인 데이터 멤버를 사용합니다 . 이렇게하면 코드 사용자가 List가 필요한 곳에서 스택을 실수로 사용할 수 없으며 그 반대도 마찬가지입니다.