C\#디자인 모드 시리즈 튜 토리 얼-어댑터 모드

1.개술
하나의 종류의 인 터 페 이 스 를 고객 이 원 하 는 다른 인터페이스 로 바꾸다.Adapter 모드 는 인터페이스 가 호 환 되 지 않 아 함께 일 할 수 없 었 던 클래스 들 을 함께 일 할 수 있 게 합 니 다.
2.해결 하 는 문제
즉,Adapter 모드 는 인터페이스 가 호 환 되 지 않 아 함께 일 할 수 없 었 던 클래스 들 을 함께 일 할 수 있 게 합 니 다.
3.모드 속 캐릭터
3.1 목표 인터페이스(Target):고객 이 기대 하 는 인터페이스.목 표 는 구체 적 이거 나 추상 적 인 유형 일 수도 있 고 인터페이스 일 수도 있다.
3.2 어 울 리 는 클래스(Adaptee)가 필요 합 니 다.어 울 리 는 클래스 나 어 울 리 는 클래스 가 필요 합 니 다.
3.3 어댑터(Adapter):적합 한 대상 을 포장 하여 원 인 터 페 이 스 를 목표 인터페이스 로 전환한다.  
4.패턴 판독
주:GoF 의 디자인 모델 에서 어댑터 모드 에 대해 두 가지 유형,클래스 어댑터 모드 와 대상 어댑터 모드 를 말 했 습 니 다.클래스 어댑터 모드 는 다 중 계승 을 통 해 하나의 인터페이스 가 다른 인터페이스 와 일치 하기 때문에 C\#,자바 등 언어 는 다 중 계승 을 지원 하지 않 기 때문에 대상 어댑터 만 소개 합 니 다.
4.1 어댑터 모드 의 아 날로 그
//img.jbzj.com/file_images/article/201606/2016060110534921.png
4.2 어댑터 모드 의 코드 구현

 /// <summary>
 ///           
 /// </summary>
 public class Target
 {
  /// <summary>
  ///   virtual          
  /// </summary>
  public virtual void Request()
  {
   Console.WriteLine("This is a common request");
  }
 }

 /// <summary>
 ///         
 /// </summary>
 public class Adaptee
 {
  public void SpecificRequest()
  {
   Console.WriteLine("This is a special request.");
  }
 }

 /// <summary>
 ///      
 /// </summary>
 public class Adapter:Target
 {
  //        Adeptee  
  private Adaptee adaptee = new Adaptee();

  /// <summary>
  ///     ,     Request()  ,       SpecificRequest()
  /// </summary>
  public override void Request()
  {
   adaptee.SpecificRequest();
  }
 }

4.3 클 라 이언 트 코드

 class Program
 {
  static void Main(string[] args)
  {
   //       ,     Target Request()
   Target target = new Adapter();
   target.Request();

   Console.Read();
  }
 }
실행 결과
//img.jbzj.com/file_images/article/201606/2016060110534922.png
5.모델 총화
5.1 장점
5.1.1 어댑터 를 통 해 클 라 이언 트 는 같은 인 터 페 이 스 를 호출 할 수 있 기 때문에 클 라 이언 트 에 게 투명 하 다.이렇게 하 는 것 이 더욱 간단 하고 직접적 이 며 치밀 하 다.
5.1.2 기 존의 유형 을 재 활용 하여 기 존 유형 과 재 활용 환경 에 대한 요구 가 일치 하지 않 는 문 제 를 해결 했다.
5.1.3 목표 클래스 와 어댑터 클래스 를 결합 시 키 고 어댑터 클래스 를 도입 하여 기 존의 어댑터 클래스 를 다시 사용 하 며 기 존 코드 를 수정 하지 않 아 도 됩 니 다.
5.1.4 하나의 대상 어댑터 는 여러 개의 서로 다른 어댑터 류 를 같은 목표 에 맞 출 수 있다.즉,같은 어댑터 는 어댑터 류 와 그의 하위 류 를 모두 목표 인터페이스 에 맞 출 수 있다.
5.2 단점
대상 어댑터 의 경우 어댑터 교체 의 실현 과정 이 복잡 하 다.
5.3 필드 적용
5.3.1 시스템 은 기 존의 종 류 를 사용 해 야 하 는데 이런 종류의 인 터 페 이 스 는 시스템 의 인터페이스 에 부합 되 지 않 는 다.
5.3.2 서로 에 게 큰 관련 이 없 는 일부 유형 을 만 들 려 면 앞으로 도 입 될 수 있 는 유형 과 함께 일 하 는 것 을 포함한다.
5.3.3 두 가지 유형 이 하 는 일 은 같 거나 비슷 하지만 서로 다른 인 터 페 이 스 를 가 질 때.
5.3.4 낡은 시스템 개발 유형 은 일부 기능 을 실 현 했 지만 클 라 이언 트 는 다른 인터페이스의 형식 으로 만 접근 할 수 있 지만 우 리 는 기 존의 유형 을 수 동 으로 변경 하 는 것 을 원 하지 않 는 다.
5.3.5 제3자 구성 요 소 를 사용 합 니 다.구성 요소 인터페이스 정 의 는 자신 이 정의 한 것 과 다 르 기 때문에 자신의 인 터 페 이 스 를 수정 하고 싶 지 않 지만 제3자 구성 요소 인터페이스의 기능 을 사용 해 야 합 니 다.
6.어댑터 적용 예시
6.1 ADO.NET 을 사용 한 개발 자 들 은 모두 DataAdapter 를 사용 한 적 이 있 을 것 이다.이것 은 바로 DataSet 과 데이터 소스 간 의 어댑터 이다.DataAdapter 는 Fill 과 Update 를 매 핑 하여 이 어댑터 를 제공 합 니 다.
6.2 핸드폰 전원 어댑터
이상 이 바로 본문의 전체 내용 입 니 다.여러분 께 참고 가 될 수 있 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기