객체지향 설계의 목표는 적절한 책임을 수행하는 객체들의 협력을 기반으로 결합도가 낮고 재사용 가능한 코드 구조를 창조하는 것이다.
일관성있고 유사한 협력 패턴을 사용해야 코드가 늘어나도 인지부하가 줄어든다.
우리가 만들었던 핸드폰 요금제 코드 요구사항을 변경해보면서 변화를 어떻게 시킬 수 있는지 알아보자.
p.487
근데.. 일관성 없는 코드 구현 방식이 문제라고 했는데 사실상 요금제 문제는 각각이 다른 구현 방식을 택해야하는 문제아닌가? 여기서 일관성을 억지로 넣는게 더 이상해질 것 같은데..
훌륭한 구조 설계를 위해 따라야하는 기본 원칙 (디자인 패턴도 대부분 이를 따른다.)
조건 로직을 객체 사이의 이동으로 변경하기 위해서는 커다른 클래스를 더 작은 클래스로 분리해야한다.
그렇다면 어떤 기준으로 클래스를 분리할까?