자바 디자인 모드 어댑터 모드(Adapter)
하나의 인 터 페 이 스 를 사용자 가 원 하 는 다른 인터페이스 로 변환 합 니 다.Adapter 모드 는 인터페이스 가 호 환 되 지 않 아 함께 일 할 수 없 었 던 클래스 들 을 함께 일 할 수 있 게 합 니 다.
두 가지 실현 방식
1.클래스 어댑터 모드:
2.대상 의 어댑터 모드:
클래스 어댑터 모드 의 UML 그림 은 다음 과 같 습 니 다.
클래스 의 어댑터 모드 는 적합 한 클래스 의 API 를 대상 클래스 의 API 로 변환 합 니 다.
위의 그림 에서 디자인 한 역할 은 다음 과 같다.
목표 캐릭터(Target):이것 이 바로 기대 하 는 인터페이스 입 니 다.
원본 역할(Adapee):현재 적합 한 인터페이스 가 필요 합 니 다.
어댑터 역할(Adapter):이 모드 의 핵심 입 니 다.어댑터 는 원본 인 터 페 이 스 를 대상 인터페이스 로 변환 합 니 다.
코드 예제:
interface Target{
void method1();
void method2(); //
}
// method2 。
class Adaptee{
public void method1(){
System.out.println("method1");
}
}
class Adapter extends Adaptee implements Target{
@Override
public void method2() {
System.out.println("this is target method");
}
}
public class MainTest {
public static void main(String arg[]) {
Target target = new Adapter();
target.method2();
}
}
대상 어댑터 모드 의 Uml 그림 은 다음 과 같 습 니 다.핵심 사고방식 은 클래스 의 어댑터 모델 과 같 습 니 다.어댑터 클래스 를 수정 할 뿐 어댑터 클래스 를 계승 하지 않 고 어댑터 클래스 의 인용 을 가지 고 있 습 니 다.코드 는 다음 과 같 습 니 다:
interface Target{
void method1();
void method2();
}
class Adaptee{
public void method1(){
System.out.println("method1");
}
}
class Adapter implements Target{
private Adaptee adaptee;
public Adapter(Adaptee adaptee){
this.adaptee = adaptee;
}
@Override
public void method2() {
System.out.println("this is target method");
}
@Override
public void method1() {
// TODO Auto-generated method stub
adaptee.method1();
}
}
public class MainTest {
public static void main(String arg[]) {
Target target = new Adapter(new Adaptee());
target.method2();
}
}
어댑터 모드 의 장단 점:더 좋 은 재 활용 성,더 좋 은 확장 성.시스템 은 기 존의 종 류 를 사용 해 야 하 는데 이런 인 터 페 이 스 는 시스템 의 수요 에 부합 되 지 않 으 면 어댑터 모드 를 통 해 이러한 기능 을 더욱 잘 재 활용 할 수 있다.어댑터 기능 을 실현 할 때 자신 이 개발 한 기능 을 호출 하여 자 연 스 럽 게 시스템 의 기능 을 확장 할 수 있다.
단점:어댑터 를 너무 많이 사용 하면 시스템 이 매우 어 지 럽 고 전체적으로 파악 하기 어렵다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.