반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
6주차-1. Adapter 본문
728x90
반응형
디자인 패턴을 모르는 사람이 스터디를 하며 적은 것이라 틀린 부분이 있을 수 있습니다.
틀린 부분은 알려주시면 감사하겠습니다.
어떤 패턴인가
클래스의 인터페이스를 사용자가 기대하는 인터페이스 형대로 적응(변환) 시킵니다.
서로 일치하지 않는 인터페이스를 갖는 클래스들을 함께 동작시킵니다.
말 그대로 어댑터, 우리가 흔히 말하는 돼지코 콘센트와 같은 역할을 한다.
Decorator 패턴과 헷갈릴 수 있지만, decorator 패턴은 확장을 하는 것이고, adapter 패턴은 호환성을 위한 것이라 생각하면 편하다.
어떻게 쓰는가
딱히 어렵지 않게 사용할 수 있다.
class Data1():
def __init__(self, path):
self.path = path
self.data = f.readlines(path) # 간단히 적었습니다
def __getitem__(self, idx):
return self.data[idx] # self.data[idx]: (img, label)
class Data2():
def __init__(self, path):
self.path = path
self.data = f.readlines(path) # 간단히 적었습니다
def __getitem__(self, idx):
return self.data[idx] # self.data[idx]: (path, img, label)
# 모든 data의 형태가 (img, label)로 되도록 하는 Adapter
class Adapter4Data():
def for_data1(data):
return (data[0], data[1])
def for_data2(data):
return (data[1], data[2])
어디서 활용되는가
이는 책의 내용 (p. 198)을 그대로 가져왔다.
1. 기존 클래스를 사용하고 싶은데 인터페이스가 맞지 않을 때
2. 이미 만든 것을 재사용하고자 하나 이 재사용 가능한 라이브러리를 수정할 수 없을 때
My Opinion
딱히 어려운 개념이 아니어서 이해하기 쉬웠다.
개인적으로 deep learning쪽 일을 할 때, 데이터의 구조가 다른 경우가 많은데, 이럴 때 사용하면 편할 것 같다.
이렇게 바로 사용할 수 있는 공부를 하면 기분이 좋다.
728x90
반응형
'스터디 > 디자인 패턴' 카테고리의 다른 글
7주차-1. Flyweight (0) | 2021.06.23 |
---|---|
6주차-2. Strategy (0) | 2021.06.09 |
5주차-2. State Pattern (0) | 2021.05.26 |
5주차-1. Decorator Pattern (0) | 2021.05.26 |
4주차-2. Template Method (0) | 2021.05.13 |
Comments