1. 어댑터 패턴이란?

  • 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴
  • 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해줌

2. 어댑터 패턴 예시

// 갤럭시폰 인터페이스
public interface Galaxy {
	public void Samsung();
}

// 갤럭시노트 클래스
public class GalaxyNote implements Galaxy {
	@Override
	public void Samsung() {System.out.println("I'm from Samsung");
}


// 아이폰 인터페이스
public interface IPhone {
	public void Apple();
}

// 아이폰SE 클래스
public class IPhoneSE implements IPhone {
	@Override
	public void Samsung() {System.out.println("I'm from Apple");
}

 

여기서 IPhone과 Galaxy를 연결해주는 어댑터를 생성한다.

// 어댑터 생성
public class IPhoneAdapter implements Galaxy {
	private IPhone iPhone;
    
	public IPhoneAdapter (IPhone iPhone) { this.iPhone = iPhone; }
    
	@Override
	public void Samsung() { iPhone.Apple(); }
}

 

이제 어댑터를 이용하여 메인 코드를 작성한다.

public class Main {
	public static void main(String[] args) {
		IPhoneSE iPhonSE = new IPhoneSE();
		// IPhonSE 인스턴스 생성
        
		GalaxyNote galaxyNote = new GalaxyNote();
		// GalaxyNote 인스턴스 생성
        
		Galaxy iPhoneAdapter = new IPhoneAdapter(galaxyNote);
        
		testGalaxy(galaxyNote);
		testGalaxy(iPhoneAdapter);
	}
    
	public static void testGalaxy(Galaxy galaxy) {
		galaxy.Samsung();
	}
}

'디자인 패턴 > 구조 패턴' 카테고리의 다른 글

데코레이터 패턴 (Decorator Pattern)  (0) 2021.08.29
프록시 패턴 (Proxy Pattern)  (0) 2021.08.28
파사드 패턴 (Facade Pattern)  (0) 2021.08.27

+ Recent posts