어댑터 모드 설명
참고 : 어댑터 모드는 일반적으로 사용될 인터페이스가 응용 프로그램이나 시스템과 일치하지 않지만 도입 해야하는 경우입니다.
장면 : 휴대 전화를 구입 한 것과 같으며 구입 한 후 충전 케이블 플러그가 3 개의 플러그라는 것을 알았지 만 집에는 소켓에 플러그가 2 개뿐입니다. 우리는 무엇을해야합니까? 편의를 위해서, 어디서나 청구하려면 보편적 충전 어댑터를 구입해야합니다. 전화를 집에서 청구 할 수 있도록; 그렇지 않으면 당신은 그것을 배치 하거나이 플러그로 장소로 달려 가서 충전 할 수 있습니다.
실제 개발 환경에서, 타사 애플리케이션에서 제공하는 기존 시스템 또는 인터페이스는 정의 된 인터페이스와 일치하지 않기 때문에, 그러한 기존 또는 타사 인터페이스는 인터페이스 지향 환경에서 사용할 수 없습니다. 현재 어댑터 클래스를 사용하여 클래스를 상속 받고 어댑터 클래스가 인터페이스를 구현하여 이전 시스템 또는 타사 응용 프로그램의 인터페이스를 도입하도록합니다.
이러한 방식으로 인터페이스 프로그래밍을 사용할 때이 적응 형 매칭 클래스를 사용하여 이전 시스템 또는 타사 응용 프로그램의 인터페이스를 간접적으로 호출 할 수 있습니다.
JavaScript에서는 동적 객체 지향 언어의 어댑터 패턴과 유사한 코드를 구현하기 위해 상속 된 프로토 타입 인스턴스를 사용하여 구현할 수 있습니다. 인터페이스 제약 조건을 기반으로하지만 JavaScript에는 인터페이스 번호가 없으므로 인터페이스 계층을 제거하고 유사한 소스 코드를 시뮬레이션하기 위해 인터페이스 구현 클래스 대상을 직접 구현합니다.
소스 코드 예제
1. 적응할 클래스 및 인터페이스 방법 :
코드 사본은 다음과 같습니다.
함수 adaptee () {
this.name = 'adaptee';
}
adaptee.prototype.getname = function () {
이 this.name;
}
2. 일반 구현 클래스 [JavaScript에 인터페이스가 없으므로 구현 클래스가 직접 제공됩니다]
코드 사본은 다음과 같습니다.
함수 target () {
this.name = '대상';
}
대상 .prototype.queryName = function () {
이 this.name;
}
3. 적응 클래스 :
코드 사본은 다음과 같습니다.
함수 adapte () {
this.name = '';
}
adapte.prototype = new Adaptee ();
adapte.prototype.queryName = function () {
this.getName ();
}
4. 사용 방법 :
코드 사본은 다음과 같습니다.
var local = new target ();
local.queryName (); // 일반 구현 클래스를 호출합니다
var adapte = new adapte ();
adapte.queryName (); // 이전 시스템 또는 타사 응용 프로그램 인터페이스 호출;
다른 지침
위의 네 번째 단계에서 var local 및 var adapte는 Java 및 C#과 같은 객체 지향 언어와 같은 다음과 유사합니다.
코드 사본은 다음과 같습니다.
인터페이스 대상 {
공개 문자열 QueryName ();
}
// 인터페이스 참조 포인터
대상 Local = New RealTarget (); // 즉, 위의 JavaScript의 대상 구현 클래스입니다
local.queryName ();
//어댑터
대상 adapte = new Adapte ();
adapte.queryName ();
어댑터 클래스는 인터페이스를 대상 클래스 인터페이스에 연결하는 중간 계층임을 알 수 있습니다. 필요한 대상이 이미 존재하는 문제를 해결하는 데 사용되지만 직접 사용할 수 없으며 코드 정의와 함께 사용할 수 없으므로 어댑터 모드를 사용해야합니다. 어댑터 모드를 변환 모드와 포장 모드라고도합니다.