관리 메뉴

생각해보기

오브젝트(조영호) 책 정리 -14- 본문

객체지향

오브젝트(조영호) 책 정리 -14-

정한_s 2021. 12. 3. 16:01

객체들의 협력 구조가 서로 다른 경우에는 코드를 이해하기 어렵고 코드 수정을 인해 버그가 발생할 위험성도 높아진다.

유사한 요구사항을 추가해야 하는 상황에서 각 협력이 서로 다른 패턴을 따르는 경우 전체적인 설계의 일관성이 무너진다.

따라서 가능하면 유사한 기능을 구현하기 위해 유사한 협력 패턴을 사용하는 것이 좋다. 일관성 있는 협력 패턴을 사용하면 코드가 이해하기 쉽고 직관적이며 유연해진다.

 

협력을 일관성 있게 만들기 위한 방법

  • 변하는 개념을 변하지 않는 개념으로 분리하라
  • 변하는 개념을 캡슐화하라

변경에 초점을 맞추고 캡슐화의 관점에서 설계를 바라보면 일관성 있는 협력 패턴을 얻을 수 있다. 캡슐화는 단순히 데이터를 감추는 것이 아니다. 캡슐화는 변하는 어떤 것이든 감추는 것이다. 캡슐화를 통해 코드 수정을 인한 파급효과를 줄일 수 있다.

 

캡슐화

  • 데이터 캡슐화 : 내부 관리 데이터 캡슐화
  • 매서드 캡슐화 : 클래스의 내부 행동을 캡슐화 
  • 객체 갭슐화 : 객체와 객체 사이의 캡슐화(객체 합성)
  • 서브타입 캡슐화 : 서브타입의 종류 캡슐화(다형성)

일반적으로 데이터 캡슐화와 메서드 캡슐화는 개별 객체에 대한 변경을 관리하고, 객체 캡슐화와 서브타입 캡슐화는 협력에 참여하는 객체의 관계에 대한 변경을 관리한다.

 

객체의 관계를 캡슐화 하는 방법

  • 변하는 부분을 분리해서 타입 계층을 만든다 : 변하는 부분을 분리한다. 변하는 부분들의 공통적인 행동을 추상 클래스나 인터페이스로 추상화한후, 변하는 부분들이 이 추상클래스나 인터페이스를 상속받게 한다
  • 변하지 않는 부분의 일부로 타입 계층을 합성한다 : 타입 계층을 변하지 않는 부분에 합성한다. 변하지 않는 부분에서는 변경되는 구체적인 사항에 결합돼서는 안된다.

일관성 있는 협력의 핵심은 변경을 분리하고 캡슐화는 것이다. 유사한 기능에 대한 변경이 지속적으로 발생하고 있다면, 변경을 캡슐화 할 수 있는 적절한 추상화를 찾고 이 추상화에 변하지 않는 공통 책임을 할당하라. 협력을 일관성 있게 만드는 과정은 유사한 기능을 구현하기 위해 반복적으로 적용할 수 있는 협력의 구조를 찾는 과정이다.

 

 

 

 

Comments