문제

정보 숨기기는 시스템을 구성하는 모듈을 분리하는 데 어떻게 도움이됩니까?

도움이 되었습니까?

해결책

캡슐화 (정보 숨기기)를 사용하면 절대 최소값 만 외부 세계에만 노출시킬 수 있습니다. 즉, 비영리 비트를 고객에게 영향을 미치지 않고 마음의 내용으로 변경할 수 있습니다.

적절한 사례. 배열에서 문자열을 보유하는 데이터 구조를 구현했다고 가정 해 봅시다. 배열을 노출하면 데이터 구조 사용자가 만 사용할 수 있습니다. str[7] 위치 7에서 문자열을 가져옵니다.

이제 데이터 구조를 균형 잡힌 트리로 재 구현하여 문자열 검색 속도를 높이기로 결정하면 어떻게됩니까? 당신은 줄을 나무로 옮기고 배열을 끈이 아니라 트리 내의 위치로 갈아 입어 배열을 변경함으로써 이것을합니다.

고객은 포인터가 아니라 현악기를 기대하기 때문에 고객을 깨뜨릴 것입니다. 모든 단일 클라이언트는 배열에서 포인터를 얻기 위해 변경해야합니다.

그러나 구현을 완전히 숨기고 기능을 제공 한 경우 :

String getStringAt (int n);

데이터 구조 만 변경합니다 그리고 호환성을 유지하는 기능.

고객 ~하지 않다 응용 프로그램 프로그래밍 인터페이스 (API)가 변경되지 않았기 때문에 중단하십시오.

내가 수업에서 따르는 가장 중요한 규칙 중 하나는 최대 일관성, 최소 커플 링. 다시 말해, 단일 클래스는 필요한 모든 것을 가져야하며 (더 이상 아무것도 아님) 외부 세계와 가능한 한 정보 공유가 거의 없어야합니다.

그것의 의미는 모두 고객이 할 수있는 것은 API에 전화하는 것입니다. 비 API 방법을 노출 시키거나 공개 변수에 대한 끊임없는 액세스를 허용하지 않음 - 모든 것은 세터와 게터로 수행해야합니다.

다른 팁

데이터 숨기기, 모듈이 너무 많지 않습니다. 커플 링을 제한하는 데 도움이됩니다 그들 사이에.
이는 숨겨진 요소 중 어느 것도 정의 된 것보다 다른 모듈에서 사용할 수 없기 때문에 모듈을 "커플"하는 타이 인 / 의존성 / 호출 -T-

다시 말해, 그것은 모듈 간 교환을 이들로 제한합니다. API에서 구체적으로 정의됩니다, API가 동일하게 유지되는 한 Module Interop이 작동하기 때문에 주어진 모듈의 구현이 수정 될 때이 사실은 많은 도움이됩니다. (어떻게 든 모듈 A가 모듈 B의 변수 X를 사용했는지 찾기 위해 코드를 스카우트 할 필요가 없습니다 (B가 숨겨져있는 경우 유일하게 사용하는 것이 유일합니다!)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top