접근제어
컴포넌트의 내부 구현을 숨기자
어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐이다. 오직 API를 통해서만 다른 컴포넌트와 소통하고 서로의 내부 동작 방식에는 전혀 개의치 않게 설계를 해야한다. 이것이 정보 은닉, 혹은 캡슐화라고 불리는 소프트웨어 설계의 근간이 되는 원리이다. 그럼 어떤 장점을 얻게 될까? 시스템 개발 속도를 높여준다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 성능 최적화에 도움을 준다. 각 컴포넌트가 서로 영향을 주지 않기 때문에, 필요한 컴포넌트만 최적화할 수 있다. 소프트웨어 재사용성을 높인다. 외부에 거의 의존하지 않는 컴포넌트라면 다른 낯선 개발환경에서도 유용히 쓰일 수 있다. 큰 시스템을 제작하는 ..