티스토리 뷰
어댑터(Wrapper) 클래스는 기존 클래스에 대한 수정 없이 서로 직접적으로 상호작용할 수 없는 두 클래스를 상호작용할 수 있도록 해준다.
즉, ‘이미 제공되어 있는 것’과 ‘필요한 것’의 차이를 없애줄 수 있는 패턴
예) A라는 회사에서 B라는 회사에서 만든 코드를 자기회사에서 만든 회사의 코드와 연동시킬 때,
코드를 받을 때 마다 수정할 순 없다. 이때사용되는 것이 Adapter패턴!!
AdpaterPattern의 구현은 is-a 또는 has-a 로 구현된다.
--------------------------------------------------------------------------------------------------------------
User라는 클래스가 있을 때, UserAdapter를 구현해보자.
public class User {
private String firstName;
private String surName;
public User(String firstName, String surName) {
this.firstName = firstName;
this.surName = surName;
}
public String getFirstName() {
return firstName;
}
public String getSurName() {
return surName;
}
}
has-a를 통한 Adpater구현
public class UserAdapter implements FullName {
private User user;
public UserAdapter(User user) {
this.user = user;
}
@Override
public String getFullName() {
return user.getFirstName() + user.getSurName();
}
}
is-a를 통한 Adapter구현
public class UserAdapter extends User implements FullName {
public UserAdapter(String firstName, String surName) {
super(firstName, surName);
}
@Override
public String getFullName() {
return getFirstName() + getSurName();
}
}
어떤 어댑터를 사용해야 하나?
특정 클래스와 그것의 모든 후손 클래스에 대한 공통 adapter를 제공하고 싶을 경우에는 클래스 어댑터를 사용할 수 없다.
= 자바의 경우 다중 adaptee를 포장해야 하면 객체 어댑터를 통해서만 가능함
차이점 :
클래스 어댑터: 1 객체, 객체 어댑터: 2 객체를 생성
어댑터의 특정 기능의 제공 측면에서는 기존 기능을 상속받기 때문에 클래스 어댑터가 유리함
'Paradigm > OOP' 카테고리의 다른 글
| [OOP] StatePattern (0) | 2013.05.28 |
|---|---|
| [OOP] TemplatePattern (0) | 2013.05.13 |
| [OOP] 초기화를 위한 Null Object (0) | 2013.04.27 |
| [OOP] CommandPattern 구현해보기 (0) | 2013.04.27 |
| [OOP] Singleton, Doubleton, Mutilton (0) | 2013.04.19 |
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
- Total
- Today
- Yesterday