'오브젝트: 코드로 이해하는 객체지향 설계' 1주차
분량 : 1장 ~ 5장
기간 : 22.5.7 ~ 22.5.14
설계는 변경을 위해 존재하고 변경에는 어떤 식으로든 비용이 발생한다.
훌륭한 설계란 합리적인 비용안에서 변경을 수용할 수 있는 구조를 만드는 것
상태를 객체 분할의 중심축으로 삼으면 구현에 관한 세부사항이 인터페이스에 스며들게 되어 결과적으로 상태 변경은 인터페이스의 변경을 초래한다. 즉, 인터페이스에 의존하는 모든 객체에게 변경의 영향이 퍼지게 된다.
그러나, 객체의 책임은 인터페이스에 속한다. 따라서 책임에 초점을 맞추면 상대적으로 변경에 안정적인 설계를 얻을 수 있다.
구현 : 나중에 변경될 가능성이 높은 어떤 것
인터페이스 : 상대적으로 안정적인 부분
구현을 내부에 숨기고 외부에는 상대적으로 안정적인 부분만 공개함으로써 변경의 여파를 통제할 수 있다.
캡슐화란 변경 가능성이 높은 부분을 객체 내부로 숨기는 추상화 기법이다.
=> 낮은 응집도와 높은 결합도를 갖는다.
=> 변경에 취약하다.
올바른 객체지향 설계의 무게 중심은 항상 객체의 내부가 아니라 외부에 맞춰져야 한다.
데이터 중심 설계에서 초점은 객체의 외부가 아닌 내부로 향한다.
Ex) 어떤 데이터를 선택할지, 데이터로 어떤 역할을 수행할 지 책임을 고려하지 않고 고립해서 생각한다.
객체의 인터페이스에 구현이 노출돼 있기 때문에 객체지향의 1 원칙인 캡슐화를 위반한다.