Latest web development tutorials

Adapter model

Tryb Adapter (Adapter deseń) jako pomost pomiędzy dwoma niezgodnymi interfejsami. Tego rodzaju wzorców projektowych należą wzór strukturalny, który łączy w sobie cechy dwóch oddzielnych interfejsów.

Model ten wiąże się z jednej klasy, który jest odpowiedzialny za niezależne lub niekompatybilnymi łączą funkcji interfejsu. Na przykład prawdziwego życia, jako czytnik kart pamięci jest adapter i laptop pomiędzy. Karta pamięci do czytnika, to czytnik do notebooka, dzięki czemu karta pamięci mogą być odczytywane za pośrednictwem komputera.

Wykazujemy stosowanie trybu adaptera następujących przykładach. W którym odtwarzacz audio może odtwarzać tylko pliki mp3 grać VLC i MP4 plików przy użyciu bardziej zaawansowanego odtwarzacza audio.

wprowadzenie

Intencja: aby przekształcić interfejs klasy do innego interfejsu klienci oczekują.wzór sprawia, że ​​te klasy Adapter inaczej z powodu niekompatybilnych interfejsów nie mogą ze sobą współpracować, aby wspólnie pracować.

Głównie do rozwiązania: główne rozwiązanie w systemie oprogramowania, często niektóre z "istniejącego obiektu" do nowego środowiska, nowych wymogów środowiskowych, a interfejs jest obecnie obiekt nie może być spełnione.

Kiedy stosować: 1, system wymaga użycia istniejącej klasy, a takie interfejsy nie spełniają potrzeb systemu.2, aby utworzyć klasy mogą być ponownie wykorzystane, w tym niektóre mogą działać niektóre z grup nie są znacznie związane ze sobą w przyszłości wprowadzenia grupy te klasy nie muszą mieć tego samego interfejsu źródłowego. 3, poprzez konwerter interfejsu, klasy do innej linii klasowych. (Takie jak tygrysy i ptaków, teraz bardziej niż Tiger bez zwiększania popytu podmiotów w ramach dodatkowego adaptera, w której tygrysa obiekty inclusive, wdrażania interfejs latać.)

Jak naprawić: dziedziczone lub uzależnienie (zalecane).

Kluczowymi kod: dziedziczenie adapter lub zależnych obiektów, które już istnieją, aby osiągnąć pożądany interfejs docelowy.

Przykłady zastosowań: 1 Stany Zjednoczone elektryczny 110V, 220V Chiny, nie powinno być zasilacz 110V do 220V.2, Java JDK 1.1 zapewnia interfejs wyliczanie i zapewnia interfejs Iterator w 1.2, chcesz korzystać z JDK 1.2, zanim system będzie musiał być przekształcony wyliczają interfejsu interfejs Iterator, to trzeba wzorzec adaptera. 3, należy uruchomić program na Windows Linux. 4, JAVA w JDBC.

Zalety: 1, można dokonać wszelkiego rodzaju biegną razem dwa niepowiązane.2, poprawić ponowne użycie klasy. 3, zwiększenie przejrzystości klasy. 4, dobra elastyczność.

Wady: 1, nadmierne korzystanie z adaptera, dzięki czemu system bardzo brudny i trudny do uchwycenia całości.Na przykład, połączenie jest wyraźnie widoczne interfejs, w rzeczywistości, być dostosowane do osiągnięcia B wewnętrzny interfejs stał się systemem, czy to dzieje się zbyt wiele, jest równoznaczne z katastrofą. Tak więc, jeśli nie jest to konieczne, nie można użyć adaptera, lecz bezpośrednio do systemu zrekonstruowany. 2. co najwyżej JAVA dziedziczyć klasy, więc na najlepszej adaptacji adaptacji przez klasy i musi kierować klasą jest klasa abstrakcyjna.

scenariusze: Jest motywacja do modyfikowania interfejsu normalne funkcjonowanie systemu, należy rozważyć użycie trybu adaptera.

Uwaga: Adapter nie zostanie dodany po szczegółowy projekt, ale żeby rozwiązać problem w projektach usługowych.

realizacja

Mamy interfejsMediaPlayeroraz realizację interfejsu klasy podmiotAudioPlayerMediaPlayer.DomyślnieAudioPlayer można odtwarzać MP3 Format pliku audio.

Mamy też innyAdvancedMediaPlayerinterfejsu i wdrożone klas encjiAdvancedMediaPlayerinterfejs. Ta klasa może odtwarzać VLC plików i formatów MP4.

Chcemy, abyAudioPlayerodtwarzania plików audio do innych formatów. Aby to osiągnąć, musimy utworzyć klasy adaptera implementuje interfejsMediaAdapterMediaPlayer i używać obiektuAdvancedMediaPlayergrać żądany format.

AudioPlayerużyciu klasy adapteraMediaAdapterprzenieść żądany rodzaj dźwięku, nie trzeba znać format rzeczywistej klasy może odegrać potrzeb audio.AdapterPatternDemo,nasze zajęcia pokazowe z wykorzystaniem klasyodtwarzacze audiodo odtwarzania różnych formatów.

wzór Adapter diagram UML

Etap 1

Gracze i bardziej zaawansowany odtwarzacz multimedialny, aby stworzyć interfejs dla mediów.

MediaPlayer.java

public interface MediaPlayer {
   public void play (String audioType, String filename);
}

AdvancedMediaPlayer.java

public interface AdvancedMediaPlayer {	
   public void playVlc (String filename);
   public void playMp4 (String filename);
}

Etap 2

Tworzenie klas encji realizowane interfejsAdvancedMediaPlayer.

VlcPlayer.java

public class VlcPlayer realizuje AdvancedMediaPlayer {
   @Override
   public void playVlc (String filename) {
      System.out.println ( "Gra vlc Nazwa pliku :." + filename);		
   }

   @Override
   public void playMp4 (string nazwa_pliku) {
      // Nic nie rób}
}

Mp4Player.java

public class Mp4Player realizuje AdvancedMediaPlayer {

   @Override
   public void playVlc (String filename) {
      // Nic nie rób}

   @Override
   public void playMp4 (string nazwa_pliku) {
      System.out.println ( "Odtwarzanie plików mp4 Nazwa :." + FileName);		
   }
}

etap 3,

Tworzenie klasyMediaPlayerrealizuje adapter interfejsu.

MediaAdapter.java

public class MediaAdapter realizuje MediaPlayer {

   AdvancedMediaPlayer advancedMusicPlayer;

   publicznego MediaAdapter (String audioType) {
      if (audioType.equalsIgnoreCase vlc ( "")) {
         advancedMusicPlayer = new VlcPlayer ();			
      } Else if (audioType.equalsIgnoreCase ( "mp4")) {
         advancedMusicPlayer = new Mp4Player ();
      }	
   }

   @Override
   public void play (String audioType, String filename) {
      if (audioType.equalsIgnoreCase vlc ( "")) {
         advancedMusicPlayer.playVlc (filename);
      } Else if (audioType.equalsIgnoreCase ( "mp4")) {
         advancedMusicPlayer.playMp4 (filename);
      }
   }
}

Etap 4

Tworzenie klas encji realizowane interfejsMediaPlayer.

AudioPlayer.java

public class AudioPlayer realizuje MediaPlayer {
   MediaAdapter mediaAdapter; 

   @Override
   public void play (String audioType, String filename) {		

      // Odtwarzać pliki mp3 z muzyką, wbudowane wsparcie if (audioType.equalsIgnoreCase ( "mp3")) {
         System.out.println ( "Odtwarzanie plików MP3 Nazwa :." + FileName);			
      } 
      // MediaAdapter zapewnia odtwarzania innych formatów plików obsługiwanych else if (audioType.equalsIgnoreCase vlc ( "") 
         || AudioType.equalsIgnoreCase ( "mp4")) {
         mediaAdapter = new MediaAdapter (audioType);
         mediaAdapter.play (audioType, filename);
      }
      else {
         System.out.println ( "Nieprawidłowy nośnik". +
            audioType + "format nie jest obsługiwany");
      }
   }   
}

Etap 5

AudioPlayer używać do odtwarzania różnych typów formatów audio.

AdapterPatternDemo.java

{public class AdapterPatternDemo
   public static void main (String [] args) {
      AudioPlayer AudioPlayer = new AudioPlayer ();

      audioPlayer.play ( "mp3", "poza horizon.mp3");
      audioPlayer.play ( "MP4", "alone.mp4");
      audioPlayer.play ( "OHP", "Far Far away.vlc");
      audioPlayer.play ( "avi", "umysł me.avi");
   }
}

Etap 6

Sprawdź, czy wyjście.

Odtwarzanie Nazwa pliku mp3 :. Za horizon.mp3
Grając MP4 Nazwa pliku :. Alone.mp4
Gra vlc Nazwa pliku :. Daleko, daleko away.vlc
Nieprawidłowe mediów. AVI nie jest obsługiwana