Latest web development tutorials

adattatore Modello

modalità adattatore (adattatore Pattern) come un ponte tra due interfacce incompatibili. Questo tipo di modelli di progettazione appartengono modello strutturale, che unisce le caratteristiche di due interfacce separate.

Questo modello prevede una singola classe che è responsabile per le funzioni di interfaccia incompatibili indipendenti o partecipare. Per esempio di vita reale, come un lettore di schede di memoria è l'adattatore e il computer portatile in mezzo. La scheda di memoria nel lettore, poi il lettore nel notebook, in modo che la scheda di memoria può essere letta attraverso il notebook.

Abbiamo dimostrato l'utilizzo della modalità adattatore dai seguenti esempi. In cui il dispositivo lettore audio in grado di riprodurre solo file mp3 per riprodurre file VLC e mp4 utilizzando un lettore audio più avanzato.

introduzione

Intento: per convertire l'interfaccia di una classe in un'altra interfaccia clienti si aspettano.modello Adapter rende le classi altrimenti a causa di interfacce incompatibili non possono lavorare insieme per lavorare insieme.

Principalmente per risolvere: la soluzione principale del software di sistema, spesso per alcuni dei "oggetto esistente" in un nuovo ambiente, nuovi requisiti ambientali e l'interfaccia è ora l'oggetto non può essere soddisfatta.

Quando utilizzare: 1, il sistema richiede l'uso di una classe esistente, e tali interfacce non soddisfano le esigenze del sistema.2, vogliono creare una classe può essere riutilizzato per, tra cui alcuni potrebbe funzionare con alcune delle classi non è molto legati gli uni agli altri in futuro introduzione della classe, queste classi non hanno necessariamente la stessa interfaccia di origine. 3, attraverso il convertitore di interfaccia, una classe in altre linee di classe. (Come tigri e uccelli, ora più di una tigre, senza aumentare le entità della domanda in virtù di un adattatore aggiuntivo, in cui una tigre oggetti compreso, implementano l'interfaccia mosca.)

Come risolvere: Inherited o di dipendenza (consigliato).

Il codice chiave: adattatore di successione o dipendenti oggetti già esistenti per raggiungere l'interfaccia di destinazione desiderata.

Esempi di applicazione: 1, gli Stati Uniti 110V elettrica, la Cina 220V, ci dovrebbe essere un adattatore 110V in 220V.2, Java JDK 1.1 fornisce l'interfaccia Enumeration e fornisce l'interfaccia Iterator a 1.2, si desidera utilizzare il 1.2 JDK, prima che il sistema dovrà essere convertito in enumerazione Interfaccia Iterator, allora avete bisogno di un modello di adattatore. 3, eseguire il programma su Windows LINUX. 4, JAVA in JDBC.

Vantaggi: 1, in grado di fare qualsiasi tipo di corsa insieme a due estranei.2, migliorare il riutilizzo di classe. 3, aumentare la trasparenza della classe. 4, buona flessibilità.

Svantaggi: 1, l'uso eccessivo della scheda, rendendo il sistema molto disordinato e difficile da afferrare il tutto.Ad esempio, la chiamata si vede chiaramente una interfaccia, infatti, essere adattato per realizzare l'interfaccia interna B è diventato un sistema se questo accade troppo, equivale a un disastro. Quindi, se non è necessario, non è possibile utilizzare un adattatore, ma direttamente al sistema ricostruito. 2. Come al massimo JAVA ereditare una classe, così al meglio l'adattamento adattamento da una classe, e devono classe di destinazione è una classe astratta.

Scenari d'uso: c'è una motivazione per modificare l'interfaccia normale funzionamento del sistema, allora si dovrebbe considerare l'utilizzo di modalità adattatore.

Nota: L'adattatore non viene aggiunto quando la progettazione di dettaglio, ma per risolvere il problema in progetti di servizio.

realizzazione

Abbiamo un'interfacciaMediaPlayer,e una realizzazione dell'interfacciaAudioPlayerMediaPlayer classe di entità. Perimpostazione predefinita,AudioPlayer può riprodurre file MP3 formato di file audio.

Abbiamo anche un altroAdvancedMediaPlayerinterfaccia e le classi di entità attuateAdvancedMediaPlayerinterfaccia. Questa classe può riprodurre il file vlc e MP4.

Vogliamo rendereAudioPlayerriprodurre file audio in altri formati. Per raggiungere questo obiettivo, abbiamo bisogno di creare una classe adattatore implementa l'interfacciaMediaAdapterMediaPlayer e utilizzare oggettiAdvancedMediaPlayerper riprodurre il formato desiderato.

AudioPlayerutilizzando una classe di adattatoriMediaAdaptertrasferire il tipo di audio desiderato, non è necessario conoscere il formato della classe reale può giocare esigenze audio.AdapterPatternDemo,i nostri corsi dimostrativi utilizzando classeAudioPlayerper giocare una varietà di formati.

modello adattatore diagramma UML

fase 1

I giocatori e media player più avanzate per creare un'interfaccia per i media.

MediaPlayer.java

interfaccia pubblica MediaPlayer {
   gioco public void (String audioType, string filename);
}

AdvancedMediaPlayer.java

interfaccia pubblica AdvancedMediaPlayer {	
   public void playVlc (string filename);
   playMp4 public void (string filename);
}

fase 2

Creare classi di entità realizzati interfacciaAdvancedMediaPlayer.

VlcPlayer.java

public class VlcPlayer implementa AdvancedMediaPlayer {
   @Override
   public void playVlc (string filename) {
      System.out.println ( "Riproduzione di file vlc Nome :." + nome del file);		
   }

   @Override
   playMp4 public void (string filename) {
      // Non fare nulla}
}

Mp4Player.java

public class MP4player implementa AdvancedMediaPlayer {

   @Override
   public void playVlc (string filename) {
      // Non fare nulla}

   @Override
   playMp4 public void (string filename) {
      System.out.println ( "Riproduzione di file MP4 Nome :." + nome del file);		
   }
}

fase 3

Creare una classeMediaPlayerimplementa l'adattatore di interfaccia.

MediaAdapter.java

public class MediaAdapter implementa MediaPlayer {

   AdvancedMediaPlayer advancedMusicPlayer;

   pubblico MediaAdapter (String audioType) {
      se (audioType.equalsIgnoreCase ( "VLC")) {
         advancedMusicPlayer = new VlcPlayer ();			
      } Else if (audioType.equalsIgnoreCase ( "mp4")) {
         advancedMusicPlayer = new MP4 ();
      }	
   }

   @Override
   gioco public void (String audioType, string filename) {
      se (audioType.equalsIgnoreCase ( "VLC")) {
         advancedMusicPlayer.playVlc (fileName);
      } Else if (audioType.equalsIgnoreCase ( "mp4")) {
         advancedMusicPlayer.playMp4 (fileName);
      }
   }
}

fase 4

Creare classi di entità realizzati interfacciaMediaPlayer.

AudioPlayer.java

public class AudioPlayer implementa MediaPlayer {
   MediaAdapter mediaAdapter; 

   @Override
   gioco public void (String audioType, string filename) {		

      // Riprodurre file musicali MP3, il supporto integrato se (audioType.equalsIgnoreCase ( "mp3")) {
         System.out.println ( "Riproduzione di file mp3 Nome :." + nome del file);			
      } 
      // MediaAdapter fornisce giocare altri formati di file supportati else if (audioType.equalsIgnoreCase ( "VLC") 
         || AudioType.equalsIgnoreCase ( "mp4")) {
         mediaAdapter = new MediaAdapter (audioType);
         mediaAdapter.play (audioType, fileName);
      }
      else {
         System.out.println ( "i media non validi." +
            audioType + "formato non supportato");
      }
   }   
}

fase 5

AudioPlayer utilizzare per riprodurre diversi tipi di formati audio.

AdapterPatternDemo.java

public class AdapterPatternDemo {
   Main (string [] args) {public static void
      AudioPlayer AudioPlayer AudioPlayer = new ();

      audioPlayer.play ( "mp3", "al di là del horizon.mp3");
      audioPlayer.play ( "mp4", "alone.mp4");
      audioPlayer.play ( "VLC", "lontano lontano away.vlc");
      audioPlayer.play ( "avi", "mente me.avi");
   }
}

passo 6

Verifica uscita.

Riproduzione di file mp3 Nome :. Al di là del horizon.mp3
Riproduzione di file MP4 Nome :. Alone.mp4
Giocando vlc file di nome :. Lontano lontano away.vlc
i media non validi. formato AVI non supportati