Skip to main content

김시용

1. 📌 핵심 개념 정리

✅ 요약하기

각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다.

  1. 경계 명확히 하기
  • 외부 라이브러리를 직접 사용하는 대신 적절한 인터페이스를 정의하여 내부 코드와 분리하기
  • 경계를 명확히 하면, 외부 라이브러리가 변경되거나 교체될 경우에도 코드 수정 범위를 최소활 수 있음

  1. 경계 테스트 작성
  • 외부 코드 사용시, 테스트 케이스 통해 사용법 미리 익히기
  • 작은 범위의 실험적인 테스트를 작성하여 예상대로 동작하는지 확인

  1. 결론
  • 경계를 명확하게 만들면 외부 코드 변경에 쉽게 대처할 수 있고, 코드의 유지보수성을 높일 수 있다.
  • ADAPTER 패턴과 경계 테스트를 활용하여 외부 라이브러리와의 통합을 신중하게 설계하는 것이 중요

2. 🤔 이해가 어려운 부분

🔍 질문하기

책을 읽으며 이해하기 어려웠던 개념이나 명확하지 않았던 내용을 정리합니다.

  1. 개념 또는 원칙의 이름
    • 어려웠던 부분
      ADAPTER패턴 사용 방법
    • 궁금한 점
      우리가 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환하는 방법
    • 이해한 점
      1. 우리가 원하는 타깃 인터페이스를 정의한다.

        public interface MapService {
          Location getCoordinates(String address);
        }
        
        
      2. 패키지가 제공하는 인터페이스(외부 라이브러리)

        public class GoogleMapsAPI {
          public LatLng getLatLng(String address) {
          // 실제 Google Maps API 호출 (가정)
          return new LatLng(37.7749, -122.4194);
          }
        }
        
        
      3. 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());
          }
        }
        
        
      4. 사용 예시

         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. 📚 참고 사항

📢 논의하기

관련된 자료가 있다면 공유하고, 더 깊이 논의하고 싶은 아이디어나 의견을 정리합니다.

  1. 관련 자료 공유
    • 추가 자료
      https://jusungpark.tistory.com/22