구조 패턴은 프로그램 내 자료 구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 사용되는 패턴으로,,
클래스나 객체를 조합하여 더 큰 구조를 만들수 있게 해줍니다.
구조패턴중, 어댑터(Adaptor) 패턴은 구조 디자인 패턴 중 하나로, 기존 클래스의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 변환합니다. 이 패턴은 호환되지 않는 인터페이스를 가진 클래스들이 함께 동작할 수 있도록 돕기 위해 사용됩니다.
어댑터 패턴을 통해 기존 클래스를 수정하지 않고도 다른 인터페이스와 호환되도록 만들 수 있습니다. 이 패턴은 특히 레거시 코드와 새로운 코드 간의 통합이나 서로 다른 서드파티 라이브러리와의 통합을 쉽게 할 수 있게 합니다.
인터페이스를 사용하여 어댑터 패턴을 명확하게 구현합니다. 어댑터 클래스는 새 인터페이스를 구현하고, 내부적으로 기존 클래스의 인스턴스를 사용하여 메서드를 호출합니다.
어댑터 패턴을 인터페이스와 클래스를 사용하여 구현할 수 있습니다. 아래는 간단한 어댑터 패턴 예제입니다.
// 기존 인터페이스
interface OldInterface {
void oldMethod();
}
// 기존 구현 클래스
class OldClass implements OldInterface {
public void oldMethod() {
System.out.println("Old method implementation");
}
}
// 새로운 인터페이스
interface NewInterface {
void newMethod();
}
// 어댑터 클래스
class AdapterClass implements NewInterface {
private OldClass oldClass;
public AdapterClass(OldClass oldClass) {
this.oldClass = oldClass;
}
public void newMethod() {
// 기존 클래스의 메서드를 호출
oldClass.oldMethod();
}
}
// 사용 예시
public class Main {
public static void main(String[] args) {
OldClass oldClass = new OldClass();
NewInterface adapter = new AdapterClass(oldClass);
adapter.newMethod(); // Old method implementation
}
}
파이썬에서는 동적으로 타입을 처리할 수 있기 때문에 더 간단하게 어댑터 패턴을 구현할 수 있습니다. 어댑터 클래스는 기존 클래스의 인스턴스를 받아서 필요한 메서드를 호출합니다.
# 기존 클래스
class OldClass:
def old_method(self):
return "Old method implementation"
# 어댑터 클래스
class Adapter:
def __init__(self, old_class):
self.old_class = old_class
def new_method(self):
# 기존 클래스의 메서드를 호출
return self.old_class.old_method()
# 사용 예시
old_instance = OldClass()
adapter = Adapter(old_instance)
print(adapter.new_method()) # Old method implementation
`git reset`의 사용법 (0) | 2024.09.25 |
---|---|
Spring MVC 아키텍처 개요 (2) | 2024.09.19 |
구조패턴중, Proxy 패턴에 대하여.. (2) | 2024.09.17 |
생성 패턴 중 '싱글톤' 패턴에 대하여.. (0) | 2024.07.14 |
생성패턴 중, 빌드패턴에 대하여.. (0) | 2024.07.14 |
댓글 영역