오브젝트 Ch.4

Manx·2022년 5월 11일
0
post-thumbnail

'오브젝트: 코드로 이해하는 객체지향 설계' 1주차
분량 : 1장 ~ 5장
기간 : 22.5.7 ~ 22.5.14

Ch.4 설계 품질과 트레이드 오프

설계는 변경을 위해 존재하고 변경에는 어떤 식으로든 비용이 발생한다.
훌륭한 설계란 합리적인 비용안에서 변경을 수용할 수 있는 구조를 만드는 것

객체의 상태는 구현에 속한다. 구현은 불안정하기 때문에 변하기 쉽다.

상태를 객체 분할의 중심축으로 삼으면 구현에 관한 세부사항이 인터페이스에 스며들게 되어 결과적으로 상태 변경은 인터페이스의 변경을 초래한다. 즉, 인터페이스에 의존하는 모든 객체에게 변경의 영향이 퍼지게 된다.
그러나, 객체의 책임은 인터페이스에 속한다. 따라서 책임에 초점을 맞추면 상대적으로 변경에 안정적인 설계를 얻을 수 있다.

캡슐화

구현 : 나중에 변경될 가능성이 높은 어떤 것
인터페이스 : 상대적으로 안정적인 부분
구현을 내부에 숨기고 외부에는 상대적으로 안정적인 부분만 공개함으로써 변경의 여파를 통제할 수 있다.

캡슐화란 변경 가능성이 높은 부분을 객체 내부로 숨기는 추상화 기법이다.

데이터 중심 설계의 문제점

  • 너무 이른 시기에 데이터에 관해 결정하도록 강요한다.
  • 협력이라는 문맥을 고려하지 않고 객체를 고립시킨 채 오퍼레이션을 결정한다.

=> 낮은 응집도와 높은 결합도를 갖는다.
=> 변경에 취약하다.

올바른 객체지향 설계의 무게 중심은 항상 객체의 내부가 아니라 외부에 맞춰져야 한다.
데이터 중심 설계에서 초점은 객체의 외부가 아닌 내부로 향한다.

Ex) 어떤 데이터를 선택할지, 데이터로 어떤 역할을 수행할 지 책임을 고려하지 않고 고립해서 생각한다.
객체의 인터페이스에 구현이 노출돼 있기 때문에 객체지향의 1 원칙인 캡슐화를 위반한다.

profile
백엔드 개발자

0개의 댓글