장기 게임에 궁성 이동 규칙을 확장하려고 다형성을 적용했더니 오히려 책임이 흩어지고 캡슐화가 깨진 경험을 복기한다. 다형성 자체가 목적이 아니라 응집도와 정보 은닉을 지키는 수단이어야 한다는 관점을, 문제 코드에서 리팩터링까지 따라가며 보여준다.
핵심 포인트- 기능 '추가'와 기존 개념의 '확장'을 구분하고, 궁성 범위까지 경로 제한을 일반화할 수 있는 지점을 개방-폐쇄 원칙의 확장점으로 해석
- 경로 전략을 주입해 중복 메서드를 합쳤지만, 새 전략을 넘기려고 Piece→Board→Game 호출 계층이 연쇄로 바뀌는 징후가 나타남
- 경로 생성에 필요한 정보는 Piece가 쥔 채 생성은 Board, 궁성 판정은 Game에서 하면서 규칙 하나 바꾸려 세 객체를 모두 수정하게 되는 문제 — 다형성을 지켜도 구조는 더 복잡해짐
- 경로 생성과 궁성 적용 여부를 상태를 소유한 Piece 계층으로 모으고, 추상 클래스의 템플릿 메서드가 알고리즘 틀을 잡되 적용 범위·이동 전략만 하위가 재정의하게 해 변경 지점을 제한
왜 읽나상속·전략 패턴을 반사적으로 꺼내 쓰다 책임이 흩어진 경험이 있는 객체지향 설계자에게, 응집도·캡슐화를 다형성보다 먼저 두는 판단 기준을 준다.