[디자인 패턴] 어댑터 패턴 :: 잡다한 프로그래밍
반응형

1. 어댑터 패턴의 정의

한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환하는 역할.

아래 그림에서 어탭터 클래스를 만드는것을 의미함


2. 예시

칠면조 클래스를 오리 클래스로 바꾸는 과정

 

 

Duck 인터페이스

public interface Duck {
	public void quack();
}

 

MallardDuck  클래스

public class MallardDuck implements Duck {
	public void quack() {
    	System.out.println("오리!");
    }
}

 

Turkey 인터페이스

public interface Turkey {
	public void gobble();
}

 

WildTurkey 클래스

public class WildTurkey implements Turkey {
	public void gobble {
    	System.out.println("칠면조!");
    }
}

 

어댑터 클래스

public class TurkeyAdapter implements Duck {
	Turkey turkey;
    
    public TurkeyAdapter(Turkey turkey) {
    	this.turkey = turkey;
    }
    
    public void quack() {
    	turkey.gobble();
    }
}

 

Test클래스

public class Test {
	public static void main(String[] args) {
		MallardDuck duck = new MallardDuck();
        
        WildTurkey turkey = new WildTurkey();
        Duck turkeyAdapter = new TurkeyAdapter(turkey);
        
        System.out.println(duck.quack());
        System.out.println(turkeyAdapter.quack());

 

즉 칠면조 클래스를 덕인터페이스에 맞게 변환하여 오리처럼 사용할 수 있게 해주는 패턴이 어댑터 패턴이다.

반응형

+ Recent posts