디자인패턴_(2)Adapter 패턴

Dazz_heyDay ·2022년 4월 12일
0

Adapter패턴 (Wrapper)

🧷 12볼트 노트북과 100볼트의 AC전원을 연결하려면? ->AC 어댑터 필요!
🧷 우리가 알고 있는 것은 100볼트 일때 어떻게 12볼트로 변환시킬까? -> 어댑터 패턴

장점 & 언제 사용?

🧷필요한 메소드를 빨리 만들 수 있음
🧷버그가 발생해도 기존 클래스는 오류가 없으므로 Adapter 클래스 중점으로 조사 ->검사가 쉬워짐
🧷이미 만들어진 클래스를 인터페이스에 맞게 개조시킬때

class

1) 제공되고 있는 것 -> Banner 클래스 (showWithParen, showWithAster)
2)교환장치 (어댑터) -> PrintBanner 클래스
3)필요한 것 ->Print 인터페이스 (printWeak, printStrong)

public class Banner{
	private String string;
    public Banner(String string){
    	this.string=string;
    }
	public void showWithParen(){
    	System.out.println("("+string+")";)
    }
    public void showWithAster(){
    	System.out.println("@"+string+"@";)
    }
}

🍿1) 상속을 사용한 Adapter 패턴

= 클래스에 의한

🌈Print 인터페이스

public interface Print{

	//추상메소드로 뼈대만 구현 
	public abstract void printWeak();
    public abstract void printStrong();

}

🌈PrintBanner 클래스

Banner 클래스를 상속받음 & Print 인터페이스 구현

public class PrintBanner extends Banner implements Print{
	public PrintBanner(String string){
    	super(string); 
        }
   
   public void printWeak(){ //Print 인터페이스 구현 
    	showWithParen();  //Banner 클래스 메소드 호출 
        }
        
    public void printStrong(){
    	showWithAster();
        }
}

🌈Main class

public class Main{
	public static void main(String[] args){
    	Print p=new PrintBanner("Hell0");
        p.printWeak();  //PrintBanner 클래스
        p.printStrong();
    	}
}

🍿2) 위임을 사용한 Adapter 패턴

=인스턴스에 의한(객체) // 필드를 경유해서 호출

🌈Print 추상 클래스

public abstract class Print{   //Print클래스!!!
	public abstract void printWeak();
    public abstract void printStrong();
}

🌈PrintBanner 클래스

public class PrintBanner extends Print{ //Print class 상속 

	private Banner banner; //banner 객체 생성-> 배너 필드를 매개로 메소드 호출 = 위임..!
    
    public PrintBanner (String string){
   		this.banner=new Banner(String);
    }
    public void printWeak(){ 
    	banner.showWithParen();  //위임 
        }
    public void printStrong(){
    	banner.showWithAster();
      }
}
profile
Why.Not.Now

0개의 댓글

관련 채용 정보