Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 타입스크립트
- compateto
- api 요청 수 제한
- oauth
- 파일 url
- 모던 자바스크립트
- 코멘토 #코멘토실무PT #실무PT후기 #실무강의 #리액트강의 #웹프로그래밍 #react #웹개발실무
- this
- invalid_grant
- 유효시간 설정 url
- 자바스크립트
- 딥다이브
- Deep Dive
- Dev-Matching
- 음악 url 파일 다운로드
- concurrency limit
- 우아한 테크코스
- api 비동기처리
- 검색
- AWS
- redis
- 스프링부트
- 우아한테크코스
- bucket4j
- TypeORM
- 프론트엔드 과제
- 프론트엔드
- 프리코스
- NestJS
- 프로그래머스
Archives
- Today
- Total
개발 알다가도 모르겠네요
Adapter Pattern을 알아보자 본문
728x90
클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴
호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해줍니다.
Example
public interface Adder {
public int plus(int x, int y);
}
public class MyAdder implements Adder {
@Override
public int plus(int x, int y) {
return x + y;
}
}
public class UseAdder {
public int add(Adder adder, int x, int y) {
int r = 0;
r = adder.plus(x, y);
return r;
}
}
public class Main {
public static void main(String[] args) {
Adder adder = new MyAdder();
UseAdder use = new UseAdder();
System.out.println(use.add(adder, 10, 20));
}
}
제약조건
-특정 회사에서 제공하는 Adder(eg. YourAdder)를 사용해야 하고 라이브러리 형태로 제공되어 수정 할 수 없음
-클라이언트 코드도 수정할 수 없음.
예를 들어 아래처럼 YourAdder 라는 라이브러리가 제공된다고 가정할 때,
사용 인터페이스 (Adder 인자 2개) 와 제공 인터페이스 (YourAdder 인자 3개)가 불일치하게 됩니다.
따라서 둘 사이에 호환되는 adapter가 필요합니다.
public class YourAdder {
public int add3(int x, int y, int z){
return x+y+z;
}
}
public class YourAdderAdapter implements Adder {
private YourAdder yourAdder;
public YourAdderAdapter(YourAdder yourAdder) {
this.yourAdder = yourAdder;
}
@Override
public int plus(int x, int y) {
return yourAdder.add3(x, y, 0);
}
}
public class Main {
public static void main(String[] args) {
Adder adder = new MyAdder();
UseAdder use = new UseAdder();
System.out.println(use.add(adder, 10, 20));
Adder adder1 = new YourAdderAdapter(new YourAdder());
System.out.println(use.add(adder1, 10, 20)); }
}
'디자인패턴' 카테고리의 다른 글
Composite Pattern 을 알아보자 (0) | 2021.12.22 |
---|---|
Bridge Pattern 을 알아보자 (0) | 2021.12.20 |
Abstract Pattern 을 알아보자 (0) | 2021.12.19 |
Factory Method Pattern 을 알아보자 (0) | 2021.12.17 |
Template Method Pattern 을 알아보자 (0) | 2021.12.15 |