Adapter Pattern

김도형·2022년 12월 14일
0

개요

변환 어댑터는 110V, 330V 전력의 전자기기라도 어댑터를 사용하면 220V 전력을 공급받을 수 있다. 디자인 패턴 상에서도 전혀 다른 인자값을 가지고도 몇몇 알고리즘을 로직을 사용해서 수행할 수 있다.

코드

  • 기존 보유 알고리즘

    • Math.java

      public class Math {
        public static double twoTime(double num) {
            return num * 2;
        }
      
        public static double half(double num) {
            return num / 2;
        }
      }

요구 사항

  • 기존 알고리즘의 double 타입의 인자 -> float 타입 인자로 메서드를 구현

  • 기존 보유 알고리즘은 그대로 두고 Adapter 구현체를 사용하여 매개변수로 float 타입 인자 -> double 타입 인자로 변경한다.

  • Adapter.java

public interface Adapter {
    public Float twiceOf(Float f);
    public Float halfOf(Float f);
    public long twiceOf(long l);
    public long halfOf(long l);
}
  • AdapterImpl.java
public class AdapterImpl implements Adapter {
    @Override
    public Float twiceOf(Float f) {
        return (float) Math.twoTime(f.doubleValue());
    }

    @Override
    public Float halfOf(Float f) {
        return (float) Math.half(f.doubleValue());
    }

    @Override
    public long twiceOf(long l) {
        return (long) Math.twoTime(l);
    }

    @Override
    public long halfOf(long l) {
        return (long) Math.half(l);
    }
}
  • main.java
public class main {
    public static void main(String[] args) {
        Adapter adapter = new AdapterImpl();
        System.out.println(adapter.twiceOf(100f)); // 200.0
        System.out.println(adapter.halfOf(50f)); // 25.0

        // long 으로 타입 변환
        System.out.println(adapter.twiceOf(12L)); // 24
        System.out.println(adapter.halfOf(15L)); // 7

    }
}

장점

  • 매번 요구사항, 위 예시로 인자 타입이 변경되는 요구사항이 와도, 기존의 사용하던 알고리즘은 변경하지 않아도 사용 가능

참고 블로그 : https://catsbi.oopy.io/344dbe7b-9774-48fc-9c95-b554e9c1c4bc

위 링크에서 거의 대부분의 내용을 가져와서 썼을 뿐입니다. 저는 정리하는 용도로만 참고해서, 해당 참고 블로그 링크에서 보시는 게 더 이해도가 빠를 수 있습니다.

profile
3년간 웹/앱, 자동제어 QA 🔜 개발자로 전향하여 현재 교육 회사에서 백엔드 개발자로 근무 중입니다.(LinkedIn : https://www.linkedin.com/in/dohyoung-kim-5ab09214b)

0개의 댓글