티스토리 뷰
어댑터(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