상세 컨텐츠

본문 제목

java design pattern Adapter 자바 디자인 패턴 어댑터

Language/JAVA

by Computer_x86_64 2021. 8. 22. 18:39

본문

Java Design pattern Adapter

java design pattern adapter를 공부하고합니다.

 

자바 디자인 패턴은 앞에 선배들이 특정 상황에서 필요한걸 미리 만들어놓은 패턴들입니다.

 

나무위키를 검색해보면 객체지향 프로그래밍 설계를 할때 자주 발생하는 문제들을 피하기 위한 패턴이라고 하네요ㅋㅋ

 

아래와 같이 3개의 패턴으로 나뉘며 Adapter pattern은 구조패턴에 속합니다.

 

생성 패턴(추상 객체 인스턴스화),

구조패턴(결체 결합),

행위패턴(객체간 커뮤니케이션)

 

싱글톤은 생성패턴에 속하고요.

 

현실세계에서 모니터는 dpi인데 desktop은 hdmi가 있다고 생각해보면...짜증이 납니다...

중간에 dpi든 hdmi에 Adapter를 꽂아서 호환시켜야합니다.

 

package _20_DesignPattern;

interface dpi { void dpiConnect(); }
interface hdmi { void hdmiConnect(); }
class appliance {}

class monitor extends appliance implements dpi {
	@Override
	public void dpiConnect() {
		System.out.println("monitor dpi connect OK ");
	}
}
class desktop extends appliance implements hdmi {
	@Override
	public void hdmiConnect() {
		System.out.println("desktop hdmi connect ok");
	}
}

//dpi를 상속받음.
class Adapter implements dpi { 
//내부에 hdmi 인터페이스를 멤버변수로 갖음.
	private hdmi h;
//Converter 생성자를 정의함.
	public Adapter(hdmi h) {
		this.h = h;
	}
//	dipConnect메서드를 Overrid 할때 h.hdmiConnect()를 내부에 호출함.
	@Override
	public void dpiConnect() {
		h.hdmiConnect();
	}
	
}
public class adapterPattern2 {
	
	public static void connect(dpi d) {
		d.dpiConnect();
	}

	public static void main(String[] args) {
		monitor m = new monitor();
		connect(m);
		
		desktop d = new desktop();
//		dpi의 interface의 변수타입으로 하고 Converter 생성자에 에 desktop을 받아 온다.
		dpi adapter = new Adapter(d);
		connect(adapter);

	}
	
}

monitor를 생성해서 connect하면 성공합니다.

 > dpi 인터페이스를 구현한 monitor는 dpi Type으로 사용할수있습니다.(다형성) 
이럴경우 desktop은 hdmi를 구현해 conect를 사용할수 없습니다.

 

Adapter class를 생성하고 dpi를 구현합니다. 위 소스를 보고 참조하시면 

dpi를 type으로 아까 만든 Adapter Class를 생성합니다. 

connect메서드에 dpi를 구현한 adapter를 매개변수로 사용하면 connect를 사용할수 있게 됩니다!

 

이해 안되는 부분은 문의주시면 저도 공부해서 확실히 설명해드리겠습니다. 

 

오늘도 열심히 하나라도 얻어가시길 ....

 

관련글 더보기

댓글 영역