[자바 디자인 패턴] 구조패턴 - 어댑터 패턴

2021. 3. 17. 17:27 JAVA/Design Patterns

구조패턴 목록

 

기존에 있는 클래스의 많은 부분을 재사용하는 경우에만 사용하고, 적은 부분만 가져다가 쓰는 경우에는 새로운 코드를 작성하는 편이 더 좋을 것 같다.

 

장점

- 이전에는 호환되지 않았던 둘 이상의 객체가 상호작용을 할 수 있습니다.

- 기존 기능을 재사용 할 수 있습니다.

 

사용시기

- 객체가 호환되지 않는 인터페이스로 기존 클래스를 사용해야하는 경우

- 호환되는 인터페이스가 없는 클래스와 협력하는 재사용 가능한 클래스를 만들려는 경우

 

UML

 

Target Interface : CreditCard

public interface CreditCard{
    public void giveBankDetails();
    public String getCreditCard();
}

 

Adapter Class : BankCustomer

public class BankCustomer extends BankDetails implements CreditCard{
    public void giveBankDetails(){
        setAccHolderName("고객이름");
        setAccNumber("계좌번호");
        setBankName("은행이름");
    }
    
    @Override
    public String getCreditCard(){
        long accno = getAccNumber();
        String accholdername = getAccHolderName();
        String bname = getBankName();
        
        return ("The Account Number " + accno + " of " + accholdername + " in " 
            + bname + " bank is valid and authenticated for issuing the credit card.")
    }
}

 

Adaptee Class : BankDetails

public class BankDetails{
    private String bankName;
    private String accHolderName;
    private long accNumber;
    
    public String getBankName(){
        return bankName;
    }
    
    public void setBankName(String bankName){
        this.bankName = bankName;
    }
    
    public String getAccHolderName(){
        return accHolderName;
    }
    
    public void setAccHolderName(String accHolderName){
        this.accHolderName = accHolderName;
    }
    
    public long getAccNumber(){
        return accNumber;  
    }
    
    public void setAccNumber(long accNumber) {
        this.accNumber = accNumber;
    }
}

 

Operation Class : AdapterPatternDemo

public class AdapterPatternDemo{
    public static void main(String[] args){
        CreditCard targetInterface = new BankCustomer();
        targetInterface.giveBankDetails();
        System.out.print(targetInterface.getCreditCard());
    }
}

 

출처 : https://www.javatpoint.com/

know-one-by-one.tistory.com/39