【텍스트】
Android에서 가장 중요하고 가장 어려운 UI 제어는 ListView List Control이라는 것을 알고 있습니다. 유연하게 사용하려면 어댑터 어댑터를 사용해야합니다. 따라서 어댑터 모드를 Java (미래에 사용할 수 있는지 여부에 관계없이)에서도 여전히 학습해야한다고 생각합니다. 결국 Java 언어는 Android 개발을위한 매우 중요한 기반입니다.
어댑터 모드를 완전히 이해하려면 학습 할 수있는 많은 지식이 있습니다. 예를 들어 어댑터 모드에는 두 가지 형태의 어댑터 클래스 모드와 어댑터 모드가 있습니다. 그러나 초보자로서, 나는 오케스트레이션 모드에 대한 입문 지식을 단순히 배우고 앞으로도 계속 개선 할 것입니다. 코딩 도로에서 고군분투하는 어린이 신발이 불평하지 않기를 바랍니다 → _ →
1. 어댑터 소개
• 한 클래스의 인터페이스를 고객이 원하는 다른 인터페이스로 변환합니다. 어댑터 모드를 사용하면 인터페이스의 비 호환성으로 인해 원래 함께 작업 할 수 없었던 클래스가 함께 작동 할 수 있습니다.
• 어댑터 모드는 현대식 Java 프레임 워크에서 매우 일반적으로 사용됩니다. 이 패턴은 다음 시나리오에 적합합니다. 기존 클래스를 사용하려고하지만 클래스는 인터페이스 요구 사항을 충족하지 않습니다. 또는 적절한 인터페이스를 제공하지 않는 다른 클래스에 적응하는 재사용 가능한 클래스를 만들어야합니다.
2. 사과와 오렌지의 예
어댑터의 아이디어는 다음과 같은 간단한 예로 설명 할 수 있습니다. 이 예는 오렌지를 사과에 "적응"하는 것입니다. 아래 그림과 같이 :
위의 그림의 하반부에서 볼 수 있듯이 어댑터에는 주황색 인스턴스가 포함되어 있으며 Apple 클래스가 상속됩니다. 주황색 물체는 어댑터에 배치되므로 오렌지는 사과처럼 작용합니다. 해당 로직 다이어그램은 다음과 같습니다.
3. 소켓 박스 플러그의 예
위의 그림에서는 중간 어댑터를 통해 왼쪽 소켓의 플러그를 성공적으로 연결할 수 있습니다.
4. 플러그 어댑터의 코드 구현
/** 어댑터 모드 (어댑터) : 한 클래스의 인터페이스를 고객이 원하는 다른 인터페이스로 변환합니다. 어댑터 모드를 사용하면 인터페이스의 비 호환성으로 인해 원래 함께 작업 할 수 없었던 클래스가 함께 작동 할 수 있습니다. */class adapterdemo {public static void main (string [] args) {// power a 작업을 시작합니다 Powera powera = new PowerAimpl (); 시작 (powera); PowerB PowerB = New PowerBimpl (); Poweraadapter PA = New PowerAadapter (PowerB); 시작 (PA); } // 정의 방법 : Powera Works Public STATIC AVOID START (PowerA PowerA) {System.out.println ( ".... 일부 중복 코드 ......"); powera.insert (); System.out.println ( "... 일부 중복 코드 .../n"); } /** public static void start (powerb powerb) {system.out.println ( "... 일부 중복 코드 ......"); powerb.connect (); System.out.println ( "... 일부 중복 코드 ......"); } */} // 어댑터 클래스 클래스 정의 PowerAadapter는 Powera {private powerb powerb; // public poweraadapter (powerb powerb) {this.powerb = powerb; } // 인터페이스를 구현하려면 powera를 구현하려면 powera public void insert () {powerb.connect (); }}/** Power a 인터페이스*/인터페이스 powera {public void insert ();} class powerAimpl은 powera {public void insert () {system.out.println ( "power a 인터페이스가 삽입되고 작동 시작"); }}/** Power B 인터페이스*/인터페이스 powerb {public void connect ();} class powerbimpl은 powerb {public void connect () {system.out.println ( "Power B 인터페이스가 연결되어 작동 시작"); }} 이 예에서는 PowerB가 Powera의 start () 메소드에서 코드를 호출하기를 원합니다. 물론, 우리는 댓글을 달린 23 행 또는 25 줄의 코드를 반복하고 싶지 않습니다. 현재 어댑터 모드를 사용할 수 있습니다.
위의 코드 설명 :
30 행 : 핵심 코드의 시작이기도 한 어댑터 정의를 시작하십시오.
33 및 34 행 : 건축 방법을 통해 전력을 전달합니다.
라인 37 코드 : 인터페이스 Powera를 구현하기 때문에 powera에서 insert ()를 구현해야합니다.
라인 38 코드 : Powera의 insert () 메소드에서 PowerB의 Connect () 메소드를 호출합니다.
그 후 즉시, 10, 11 및 12 줄의 코드는 다음을 의미합니다. 새로운 A PowerB는 어댑터 PowerAadapter로 전달하고 어댑터를 시작한 다음 PowerB가 16, 24 및 18 행에서 코드를 실행합니다.
참고 : 16, 24 및 18의 순서는 잘못되지 않습니다. 어댑터에서는 24 줄의 코드를 17 행으로 교체했기 때문입니다.
작동 효과는 다음과 같습니다.
마찬가지로 PowerA를 PowerB로 사용하려면 다른 어댑터 PowerBadapter를 정의하여 양방향 어댑터를 구현할 수 있습니다.
5. 요약
위의 23 행 및 25 행의 주석된 코드는 그것이 많은 중복 코드이며 객체 지향적 사고를 준수하지 않음을 나타냅니다. 이제 우리는 프로젝트가 온라인 상태이며 고객이이를 사용하고있는 예를 구상했지만 새로운 수요가 추가되었습니다. 객체 지향 객체에 대한 OO 원칙이 있습니다. 수정을 닫습니다 (온라인으로 이동 한 후 코드를 수정하지 마십시오. 그렇지 않으면 연쇄 반응이 발생 하여이 방법을 호출하는 다른 코드의 문제가 발생할 수 있음) (다른 사람들이 아직 호출하지 않은 새로운 메소드)에 열려 있습니다. 이 시점에서 어댑터를 통해이 중복 코드를 줄일 수 있습니다.
6. OO 디자인 원리
• 인터페이스 지향 프로그래밍 (추상 지향 프로그래밍)
• 패키지 변경
• 더 많은 조합을 사용하고 상속을 덜 사용하십시오
• 확장에 개방하기 위해 수정에 가깝습니다
개인적으로, 이러한 디자인 원칙은 실제로 지속적으로 심화되어야하므로 여기에 너무 많이 설명하지 않을 것입니다 ~
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.