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 |