Uzorak adaptera u Javi

1. Pregled

U ovom ćemo brzom vodiču pogledati uzorak adaptera i njegovu Java implementaciju.

2. Uzorak adaptera

Uzorak adaptera djeluje kao poveznica između dva nekompatibilna sučelja koja se inače ne mogu izravno povezati. Adapter omotava postojeću klasu novim sučeljem tako da postaje kompatibilan s klijentovim sučeljem.

Glavni motiv korištenja ovog uzorka je pretvoriti postojeće sučelje u drugo sučelje koje klijent očekuje. Obično se implementira nakon što aplikacija bude dizajnirana.

2.1. Primjer uzorka adaptera

Razmotrimo scenarij u kojem postoji aplikacija razvijena u SAD-u koja vraća najveću brzinu luksuznih automobila u miljama na sat (MPH). Sada moramo koristiti istu aplikaciju za našeg klijenta u Velikoj Britaniji koja želi iste rezultate, ali u kilometrima na sat (km / h).

Da bismo se riješili ovog problema, stvorit ćemo adapter koji će pretvoriti vrijednosti i dati nam željene rezultate:

Prvo ćemo stvoriti izvorno sučelje Pokretni što bi trebalo vratiti brzinu nekih luksuznih automobila u miljama na sat:

javno sučelje Movable {// vraća brzinu u milj / h dvostruko getSpeed ​​(); }

Sada ćemo stvoriti jednu konkretnu implementaciju ovog sučelja:

javna klasa BugattiVeyron implementira Movable {@Override public double getSpeed ​​() {return 268; }}

Sada ćemo stvoriti adapter sučelje MovableAdapter koji će se temeljiti na istom Pokretni razred. Može se malo izmijeniti kako bi u različitim scenarijima donio različite rezultate:

javno sučelje MovableAdapter {// vraća brzinu u KM / H dvostruko getSpeed ​​(); } 

Implementacija ovog sučelja sastojat će se od privatne metode convertMPHtoKMPH () koji će se koristiti za pretvorbu:

javna klasa MovableAdapterImpl implementira MovableAdapter {privatni pokretni luksuzni automobili; // standardni konstruktori @Override public double getSpeed ​​() {return convertMPHtoKMPH (luxuryCars.getSpeed ​​()); } privatno dvostruko pretvaranjeMPHtoKMPH (dvostruko mph) {povratno mph * 1.60934; }}

Sada ćemo koristiti samo metode definirane u našem adapteru i dobit ćemo pretvorene brzine. U ovom će slučaju biti istinita sljedeća tvrdnja:

@Test public void whenConvertingMPHToKMPH_thenSuccessfullyConverted () {Pokretni bugattiVeyron = novi BugattiVeyron (); MovableAdapter bugattiVeyronAdapter = novi MovableAdapterImpl (bugattiVeyron); assertEquals (bugattiVeyronAdapter.getSpeed ​​(), 431.30312, 0.00001); }

Kao što ovdje možemo primijetiti, naš se adapter pretvara 268 mph do 431 km / h za ovaj konkretni slučaj.

2.2. Kada koristiti uzorak adaptera

  • Kada vanjska komponenta pruža zadivljujuću funkcionalnost koju bismo željeli ponovno upotrijebiti, ali nije kompatibilna s našom trenutnom aplikacijom. Može se razviti odgovarajući adapter kako bi se učinili međusobno kompatibilnima
  • Kada naša aplikacija nije kompatibilna sa sučeljem koje očekuje naš klijent
  • Kada želimo ponovno upotrijebiti naslijeđeni kôd u našoj aplikaciji bez ikakvih izmjena u izvornom kodu

3. Zaključak

U ovom smo članku pogledali uzorak dizajna adaptera u Javi.

Potpuni izvorni kod za ovaj primjer dostupan je na GitHubu.