- [디자인 패턴] 9. 어댑터 패턴2024년 09월 26일
- Song hyun
- 작성자
- 2024.09.26.:06
728x90반응형[디자인 패턴] 9. 어댑터 패턴
1. 어댑터 패턴이란?
-어댑터 패턴(Adapter Pattern)은 호환되지 않는 인터페이스를 가진 클래스들을 함께 동작할 수 있도록 변환해주는 디자인 패턴이다.
=> 즉, 기존 클래스의 인터페이스가 요구사항과 맞지 않을 때, 새로운 인터페이스를 기존 클래스에 맞추어주는 역할!
=> 이를 통해 호환성 문제를 해결하고, 새로운 코드와 결합할 수 있다!
=> 정리: 어댑터 패턴은 서로 다른 인터페이스를 가진 객체들이 함께 동작할 수 있도록 변환해주는 패턴이다!!
2. 시나리오 코드
(1) MyHouse.java
package adapter; public class MyHouse { // 정적 메서드 (기능) // 집에 220V 전기 콘센트를 연결하는 메서드 public static void homeConnect(IElectronic220v electronic220v){ // 청소기, 드라이어기, 냉장고, TV electronic220v.connect(); } public static void main(String[] args) { // 1. // 집 콘센트에 220v 스펙을 구현한 에어컨을 연결해보자. AirConditioner airConditioner = new AirConditioner(); homeConnect(airConditioner); HairDryer dryer = new HairDryer(); // 문제 발생 // homeConnect(dryer); 220v에는 연결 불가 // 어댑터 클래스를 사왔음 ElectronicAdapter 헤어드라이기연결어댑터 = new ElectronicAdapter(dryer); homeConnect(헤어드라이기연결어댑터); } // end of main } // end of MyHouse // 스펙 : 220V 가전기기 인터페이스 interface IElectronic220v{ void connect(); } interface IElectronic110v{ void connect(); } /** * InnerMyHouse */ class AirConditioner implements IElectronic220v { @Override public void connect() { System.out.println("에어컨 연결 220v on"); } } class HairDryer implements IElectronic110v { @Override public void connect() { System.out.println("헤어드라이기 연결 110v on"); } }
(2) ElectronicAdapter.java
package adapter; // 핵심 개념 // 어댑터 클래스는 두 객체 간의 중재자로서, 서로 다른 인터페이스를 가진 객체들이 // 함께 동작할 수 있게 한다. // 어댑터 클래스 : 110v 기기를 220v 전압에서 사용할 수 있도록 변환하기 // 2. 변환하고자 하는 스펙을 구현해야 한다. public class ElectronicAdapter implements IElectronic220v{ // 1. 변환시킬 스펙을 포함 관계로 가지고 있어야 한다. private IElectronic110v electronic110v; // 3. 생성자를 통해서 110v 가전기기를 주입받음. // 이를 통해 110v와 220v를 연결하게 처리한다. public ElectronicAdapter(IElectronic110v electronic110v) { // 멤버 변수에 초기화 처리 this.electronic110v = electronic110v; } @Override public void connect() { // 어댑터는 220v 인터페이스로 호출된 메서드를 110v 기기의 connect()로 변환하여 실행한다. electronic110v.connect(); System.out.println("어댑터를 통해 110v 가전기기를 220v 스펙에 연결합니다."); } }
728x90반응형'디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 10. 전략패턴 예제: UTF-8 인코딩/디코딩 (0) 2024.09.27 [디자인 패턴] 10. 전략 패턴 (1) 2024.09.27 [디자인 패턴] 8. 팩토리 패턴 (1) 2024.09.26 [디자인 패턴] 7. 빌더 패턴 예제: 마라탕 주문하기 (0) 2024.09.26 [디자인 패턴] 7. 빌더 패턴 (0) 2024.09.26 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)