본문 바로가기

책/Object

일관성 있는 협력

객체는 협력을 위해 존재

협력은 객체가 존재하는 이유와 문맥을 제공

잘 설계된 애플리케이션은 이해하기 쉽고, 수정이 용이하며, 재사용 가능한 협력의 모임

객체지향 설계의 목표는 적절한 책임을 수행하는 객체들의 협력을 기반으로 결합도가 낮고 재사용 가능한 코드 구조를 창조하는 것

객체지향 패러다임의 장점은 설계를 재사용할 수 있다는 것


설계에 일관성 부여하기

변하는 개념을 변하지 않는 개념으로부터 분리하라

변하는 개념을 캡슐화하라

캡슐화란 변하는 어떤 것이든 감추는 것

캡슐화의 종류

 - 데이터 캡슐화 : 속성에 접근할 수 있는 방법은 메서드를 이용하는 것. 클래스는 내부에 관리하는 데이터를 캡슐화

 - 메서드 캡슐화 : 클래스 외부에 영향을 미치지 않고 메서드를 수정. 클래스의 내부 행동을 캡슐화

 - 객체 캡슐화 : 객체와 객체 사이의 관계를 캡슐화. 합성

 - 서브타입 캡슐화 : 서브타이브이 종류를 캡슐화. 다형성의 기반이 됨

서브타입 캡슐화와 객체 캡술화를 적용하는 방법

 - 변하는 부분을 분리해서 타입 계층을 만듦 : 변하는 부분의 공통적인 행동을 추상화 한 후 변하는 부분들이 이를 상속받게 함

 - 변하지 않는 부분의 일부로 타입 계층을 합성 : 변하지 않는 부분에서 변경되는 구체적인 사항에 결합돼서는 안됨






' > Object' 카테고리의 다른 글

디자인 패턴과 프레임워크  (0) 2020.09.08
서브클래싱과 서브타이핑  (0) 2020.08.25
다형성  (0) 2020.08.10
합성과 유연한 설계  (0) 2020.07.27
상속과 코드 재사용  (0) 2020.07.27