김시용
1. 📌 핵심 개념 정리
✅ 요약하기
각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다.
- 경계 명확히 하기
- 외부 라이브러리를 직접 사용하는 대신 적절한 인터페이스를 정의하여 내부 코드와 분리하기
- 경계를 명확히 하면, 외부 라이브러리가 변경되거나 교체될 경우에도 코드 수정 범위를 최소활 수 있음
- 경계 테스트 작성
- 외부 코드 사용시, 테스트 케이스 통해 사용법 미리 익히기
- 작은 범위의 실험적인 테스트를 작성하여 예상대로 동작하는지 확인
- 결론
- 경계를 명확하게 만들면 외부 코드 변경에 쉽게 대처할 수 있고, 코드의 유지보수성을 높일 수 있다.
- ADAPTER 패턴과 경계 테스트를 활용하여 외부 라이브러리와의 통합을 신중하게 설계하는 것이 중요
2. 🤔 이해가 어려운 부분
🔍 질문하기
책을 읽으며 이해하기 어려웠던 개념이나 명확하지 않았던 내용을 정리합니다.
- 개념 또는 원칙의 이름
- 어려웠던 부분
ADAPTER패턴 사용 방법 - 궁금한 점
우리가 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환하는 방법 - 이해한 점
-
우리가 원하는 타깃 인터페이스를 정의한다.
public interface MapService { Location getCoordinates(String address); }
-
패키지가 제공하는 인터페이스(외부 라이브러리)
public class GoogleMapsAPI { public LatLng getLatLng(String address) { // 실제 Google Maps API 호출 (가정) return new LatLng(37.7749, -122.4194); } }
-
Adapter 클래스 생성 (변환 역할)
GoogleMapsAPI.getLatLng()를 호출 → LatLng 객체 반환
LatLng 객체를 우리가 원하는 Location 객체로 변환
결과를 MapService.getCoordinates() 인터페이스로 제공public class GoogleMapsAdapter implements MapService { private final GoogleMapsAPI googleMapsAPI = new GoogleMapsAPI(); @Override public Location getCoordinates(String address) { LatLng latLng = googleMapsAPI.getLatLng(address); return new Location(latLng.getLatitude(), latLng.getLongitude()); } }
-
사용 예시
public class Main { public static void main(String[] args) { MapService mapService = new GoogleMapsAdapter(); Location location = mapService.getCoordinates("San Francisco"); System.out.println("위도: " + location.getLatitude() + ", 경도: " + location.getLongitude()); } }
-
- 어려웠던 부분
3. 📚 참고 사항
📢 논의하기
관련된 자료가 있다면 공유하고, 더 깊이 논의하고 싶은 아이디어나 의견을 정리합니다.
- 관련 자료 공유
- 추가 자료
https://jusungpark.tistory.com/22
- 추가 자료
No Comments