[자바 디자인 패턴] 구조패턴 - 어댑터 패턴
구조패턴 목록
- 어댑터 패턴 (Adapter Pattern)
- 브릿지 패턴 (Bridge Pattern)
- 컴포짓 패턴 (Composite Pattern)
- 데코레이터 패턴 (Decorator Pattern)
- 퍼사드 패턴 (Facade Pattern)
- 플라이웨이트 패턴 (Flyweight Pattern)
- 프록시 패턴 (Proxy Pattern)
기존에 있는 클래스의 많은 부분을 재사용하는 경우에만 사용하고, 적은 부분만 가져다가 쓰는 경우에는 새로운 코드를 작성하는 편이 더 좋을 것 같다.
장점
- 이전에는 호환되지 않았던 둘 이상의 객체가 상호작용을 할 수 있습니다.
- 기존 기능을 재사용 할 수 있습니다.
사용시기
- 객체가 호환되지 않는 인터페이스로 기존 클래스를 사용해야하는 경우
- 호환되는 인터페이스가 없는 클래스와 협력하는 재사용 가능한 클래스를 만들려는 경우
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());
}
}
'JAVA > Design Patterns' 카테고리의 다른 글
[자바 디자인 패턴] 구조패턴 - 퍼사드 패턴 (0) | 2021.03.17 |
---|---|
[자바 디자인 패턴] 구조패턴 - 데코레이터 패턴 (0) | 2021.03.17 |
[자바 디자인 패턴] 구조패턴 - 컴포짓 패턴 (0) | 2021.03.17 |
[자바 디자인 패턴] 구조패턴 - 브릿지 패턴 (0) | 2021.03.17 |
[자바 디자인 패턴] 생성패턴 - 오브젝트풀 패턴 (0) | 2021.03.17 |
[자바 디자인 패턴] 생성패턴 - 빌더 패턴 (0) | 2021.03.16 |
[자바 디자인 패턴] 생성패턴 - 프로토타입 패턴 (0) | 2021.03.16 |
[자바 디자인 패턴] 생성패턴 - 싱글톤 패턴 (0) | 2021.03.16 |