php 어댑터 모드 소개
1.어댑터 모델 은 주로'기 존 클래스 를 재 활용 하고 싶 지만 인 터 페 이 스 는 재 활용 환경 요구 와 일치 하지 않 는 상황'에 응용 되 고 남 겨 진 코드 재 활용,라 이브 러 리 이전 등에 매우 유용 하 다.
2.어댑터 모드 는 대상 어댑터 와 클래스 어댑터 두 가지 형식의 실현 구조 가 있 지만 클래스 어댑터 는'다 중 계승'의 실현 방식 을 사용 하여 좋 지 않 은 높 은 결합 을 가 져 왔 기 때문에 일반적으로 사용 하 는 것 을 추천 하지 않 습 니 다.대상 어댑터 는'대상 조합'방식 을 사용 하여 소나무 결합 정신 에 더욱 부합된다.
실현:
클래스 어댑터 모드 구성 도(계승)
대상 어댑터 모드 구성 도(조합)
(대상 어댑터 의 코드 구현)
Target:클 라 이언 트 가 사용 하 는 특정 영역 과 관련 된 인 터 페 이 스 를 정의 합 니 다.
public interface Target { void request();}
Adaptee:이미 존재 하 는 인터페이스 가 필요 합 니 다.
public class Adaptee{ public void specificRequest(){}}
Adapter:Adaptee 의 인터페이스 와 Target 인터페이스 에 적합 합 니 다.
public class Adapter implements Target{ public Adapter(Adaptee adaptee) { super(); this.adaptee = adaptee; } public void request() { adaptee.specificRequest(); } private Adaptee adaptee;}
적용 성:
1.시스템 은 기 존의 종 류 를 사용 해 야 하 는데 이런 인 터 페 이 스 는 시스템 의 수요 에 부합 되 지 않 는 다.
2.반복 적 으로 사용 할 수 있 는 종 류 를 만 들 려 면 서로 에 게 큰 관련 이 없 는 종 류 를 만 들 려 고 합 니 다.앞으로 도 입 될 수 있 는 종 류 를 포함 하여 함께 일 할 수 있 습 니 다.이런 소스 류 에 반드시 복잡 한 인터페이스 가 있 는 것 은 아니다.
3.(대상 어댑터 의 경우)디자인 에서 기 존 하위 클래스 의 인 터 페 이 스 를 여러 개 바 꿔 야 합 니 다.만약 에 클래스 의 어댑터 모델 을 사용한다 면 각 하위 클래스 에 대해 어댑터 를 만들어 야 합 니 다.이것 은 현실 적 이지 않 습 니 다.
효과 및 장단 점:
클래스 어댑터:
1.Adapte 와 Taget 을 구체 적 인 Adapter 클래스 로 일치 합 니 다.결 과 는 우리 가 하나의 클래스 와 모든 하위 클래스 를 일치 시 키 려 고 할 때,클래스 Adapter 는 업 무 를 감당 할 수 없습니다.
2.Adapter 는 Adaptee 의 일부 행 위 를 override(재 정의)할 수 있 습 니 다.Adapter 는 Adaptee 의 하위 클래스 이기 때 문 입 니 다.
대상 어댑터:
1.하나의 Adapter 와 여러 개의 Adaptee,즉 Adaptee 자체 와 모든 하위 클래스(하위 클래스 가 있다 면)가 동시에 작업 할 수 있 도록 합 니 다.Adapter 는 모든 Adaptee 에 한 번 에 기능 을 추가 할 수 있 습 니 다.
2.override(재정의)Adaptee 의 행동 을 어렵 게 합 니 다.만약 에 꼭 override Adaptee 의 방법 이 필요 하 다 면 먼저 Adaptee 의 하위 클래스 를 만들어 override Adaptee 의 방법 으로 한 다음 에 이 하위 클래스 를 진정한 Adaptee 소스 로 적합 하 게 할 수 밖 에 없다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.