<aside> 💡 시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다
</aside>
1 외부 코드 사용하기
예시) java.util.Map을 살펴보면, Map은 굉장히 다양한 인터페이스를 제공한다.
→ clear()는 Map을 사용하는 누구든 Map 내용을 지울 권한이 있다는 것을 의미한다
Map<String, Sensor> sensors = new HashMap<Sensor>();
...
Sensor s = sensors.get(sensorId);
위 코드는 “Map<String, Sensor>”가 사용자에게 필요하지 않은 기능까지 제공한다는 문제를 해결하지 못 한다.
이를 해결하기 위해, Map을 아래와 같이 숨겨주면 된다
public class Sensors {
private Map sensors = new HashMap();
public Sensor getById(String id) {
return (Sensor) sensors.get(id);
}
경계 인터페이스인 Map이 변하더라도 나머지 프로그램에는 영향을 미치지 않는다.
Sensors 클래스 안에서 객체 유형을 관리하고 변환하기 때문이다
또한 Sensors 클래스는 프로그램에 필요한 인터페이스만 제공한다
→ 요약 : Map 인스턴스를 공개 API의 인수로 넘기거나 반환하지 않도록 주의하자
2 경계 살피고 익히기