inblog logo
|
harimmon
    심화 과정

    [심화] 5. Adapter

    백하림's avatar
    백하림
    Jul 25, 2025
    [심화] 5. Adapter
    Contents
    Adapter (어댑터)

    Adapter (어댑터)

    • Proxy와 별개로 해당 객체의 다른 책임을 대신 받아서 처리할 수 있는 객체
    • 기존 시스템의 구조를 해치지 않으면서 새 클래스를 기존 시스템에 넣을 수 있도록 변환

    어댑터는 책임을 위임 받는 역할이 아님

    • 어댑터는 새로운 기능이 추가되어야 할 때 기존 시스템에 맞춰서 끼우기 위한 도구
    • 프록시처럼 역할을 위임받는 역할이 아니지만 SRP, DIP를 수행하기 위해 비슷한 역할을 수행할 수 있음

    Q1. 동물의 객체 이름이 name이 아닌 fullName으로 왔다면?

    • 동물 객체는 name을 이용한 getName을 사용
    • OuterTiger는 fullName을 사용하므로 메소드를 맞추어줘야 하는데, 이를 직접 건드리면 안됨
      • 다른 곳에서 메소드를 사용 중일 경우 모든 곳을 손봐야 함
    // 외부 요소 public class OuterTiger { private String fullName = "호랑이"; public String getFullName() { return fullName; } }

    A : 기존 동물 객체에서 사용하던 name으로 맞춰주는 어댑터가 필요함

    // Adapter : Animal 객체에 OuterTiger를 맞추기 위한 수단 public class TigerAdapter extends Animal{ // DI private OuterTiger outerTiger; public TigerAdapter(OuterTiger outerTiger) { this.outerTiger = outerTiger; } // extends @Override String getName() { return outerTiger.getFullName(); } } public class App { public static void main(String[] args) { Mouse m1 = new Mouse(); Doorman d1 = new Doorman(); Cat c1 = new Cat(); // 기존 코드는 놔두면서 어댑터만 추가함 TigerAdapter ta = new TigerAdapter(new OuterTiger()); d1.쫓아내(m1); d1.쫓아내(c1); d1.쫓아내(ta); } }
    Share article
    Contents
    Adapter (어댑터)

    harimmon

    RSS·Powered by Inblog