List 추상화와 반복자 실패와 복원 비교

구체 배열 타입에 고정된 처리기

계약 위반

클라이언트가 구체 객체 생성과 업무 처리를 동시에 맡았습니다. 인터페이스를 매개변수로 받고 애플리케이션 시작점이 구현을 선택해야 개방-폐쇄 원칙을 지킬 수 있습니다.

재현

계약 복원

ListStrategyBatch는 두 표준 구현을 같은 run에 전달해 기능 결과가 모두 90인지 확인합니다. 처리기는 List<Entry>만 저장하고 생성자에서 null도 거부합니다. 구현 이름을 출력하는 코드는 조립 결과 확인용이며 업무 계산에는 사용하지 않습니다.

구현
검증 기준어떤 MyList 구현을 주입해도 같은 입력 순서·크기·조회 결과를 반환한다

핵심: 인터페이스는 미래를 막연히 대비해 추가하지 않습니다. 이미 두 구현을 바꾸어 써야 하고 소비자가 동일한 연산을 요구할 때 비용을 회수합니다. 단 하나의 안정된 구현만 있다면 구체 타입이 더 단순할 수 있습니다.