어댑터 모드 정의 : 구조 모드에 속하며 어댑터 (어댑터)와 어댑터 (어댑터)의 두 가지 아이덴티티가 필요한 두 개의 비 호환 클래스를 함께 사용하십시오.
어댑터 모드를 사용하는 이유
우리는 종종 함께 결합되어야하는 두 개의 관련이없는 클래스를 만듭니다. 첫 번째 솔루션은 각 클래스의 인터페이스를 수정하지만 소스 코드가 없거나 하나의 응용 프로그램에 대한 인터페이스를 수정하지 않습니다. 무엇을해야합니까?
어댑터를 사용 하여이 두 인터페이스 사이에 하이브리드 인터페이스 (하이브리드)를 만듭니다.
어댑터 모드를 사용하는 방법
어댑터 방법을 구현하기 위해 "Java in injava"의 "클래스 재생"섹션에서 언급되었으며 구성과 상속의 두 가지 방법이 있습니다.
우리가 더미를 운전하고 싶다고 가정하고, 정사각형 더미와 원형 더미의 두 가지 유형이 있습니다.
코드 사본은 다음과 같습니다.
공개 수업 squarepeg {
공개 void insert (String str) {
System.out.println ( "squarepeg insert () :"+str);
}
}
공개 수업 라운드 {
공개 void insertintohole (String Msg) {
System.out.println ( "RoundPeg insertIntoHole () :"+msg);
}
}
정사각형 더미와 원형 더미가 모두 필요한 응용 프로그램이 있습니다. 그런 다음 RoundPeg에 소스 코드가 없거나 어댑터를 사용 하여이 응용 프로그램을 구현한다고 가정하면이 두 가지 클래스를 종합적으로 적용해야합니다.
코드 사본은 다음과 같습니다.
공개 클래스 Pegadapter는 squarepeg {
개인 RoundPeg RoundPeg;
public pegadapter (RoundPeg Peg) (this.roundpeg = peg;)
public void insert (String Str) {RoundPeg.insertintohole (str);}
}
위의 코드에서 RoundPeg는 Adaptee에 속하며 어댑터입니다. Pegadapter는 어댑터 (Adapter RoundPeg) 및 Target (Target SquarePeg)을 조정하는 어댑터입니다. 실제로, 이것은 조성 및 상속 방법의 포괄적 인 적용입니다.
Pegadapter는 먼저 SquarePeg를 상속 한 다음 새로운 조합을 사용하여 객체 메소드를 생성하고 RoundPeg의 RoundPeg 객체를 생성 한 다음 Parent Class insert () 메소드를 과부하합니다. 여기에서 객체를 생성하는 데 새로운 사용과 상속을 사용하여 객체를 생성하는 것의 차이점을 이해합니다.
Java 사용 경험이 있다면이 패턴이 종종 사용된다는 것을 알게되었습니다.
추가 사용
위의 Pegadapter는 Squarepeg를 상속합니다. 즉, Squarepeg와 RoundPeg를 상속 해야하는 경우, 다중 상속이 Java에서는 허용되지 않지만 두 개의 인터페이스를 구현할 수 있습니다.
코드 사본은 다음과 같습니다.
공개 인터페이스 iroundpeg {
공공 void insertintohole (String MSG);
}
공개 인터페이스 isquarepeg {
공개 무효 인서트 (String Str);
}
다음은 새로운 라운드 페그와 SquarePeg입니다.
코드 사본은 다음과 같습니다.
공개 클래스 SquarePeg 구현 ISQUAREPEG {
공개 void insert (String str) {
System.out.println ( "squarepeg insert () :"+str);
}
}
공개 클래스 라운드peg 구현 iroundpeg {
공개 void insertintohole (String Msg) {
System.out.println ( "RoundPeg insertIntoHole () :"+msg);
}
}
다음은 양방향 어댑터라는 새로운 Pegadapter입니다.
코드 사본은 다음과 같습니다.
공개 클래스 Pegadapter는 iroundpeg, isquarepeg {
개인 RoundPeg RoundPeg;
개인 squarepeg squarepeg;
// 구성 방법
public pegadapter (RoundPeg Peg) {this.roundpeg = peg;}
// 구성 방법
public pegadapter (squarepeg peg) (this.squarepeg = peg;)
public void insert (String Str) {RoundPeg.insertintohole (str);}
}
플러그 가능한 어댑터라는 유형이 있으며,이 유형은 여러 어댑터 중 하나를 동적으로 얻을 수 있습니다. 반사 기술을 사용하면 수업에서 공개 방법을 동적으로 발견 할 수 있습니다.