Pola Adaptor di Java

1. Ikhtisar

Dalam tutorial singkat ini, kita akan melihat pola Adaptor dan implementasi Java-nya.

2. Pola Adaptor

Pola Adaptor bertindak sebagai penghubung antara dua antarmuka yang tidak kompatibel yang sebaliknya tidak dapat dihubungkan secara langsung. Adaptor membungkus kelas yang ada dengan antarmuka baru agar kompatibel dengan antarmuka klien.

Motif utama di balik penggunaan pola ini adalah untuk mengubah antarmuka yang ada menjadi antarmuka lain yang diharapkan klien. Ini biasanya diterapkan setelah aplikasi dirancang.

2.1. Contoh Pola Adaptor

Pertimbangkan skenario di mana ada sebuah aplikasi yang dikembangkan di AS yang mengembalikan kecepatan tertinggi mobil mewah dalam mil per jam (MPH). Sekarang kami perlu menggunakan aplikasi yang sama untuk klien kami di Inggris Raya yang menginginkan hasil yang sama tetapi dalam kilometer per jam (km / jam).

Untuk mengatasi masalah ini, kami akan membuat adaptor yang akan mengubah nilai dan memberi kami hasil yang diinginkan:

Pertama, kami akan membuat antarmuka asli Movable yang seharusnya mengembalikan kecepatan beberapa mobil mewah dalam mil per jam:

public interface Movable { // returns speed in MPH double getSpeed(); }

Kami sekarang akan membuat satu implementasi konkret dari antarmuka ini:

public class BugattiVeyron implements Movable { @Override public double getSpeed() { return 268; } }

Sekarang kita akan membuat antarmuka adaptor MovableAdapter yang akan didasarkan pada kelas Movable yang sama . Ini mungkin sedikit dimodifikasi untuk menghasilkan hasil yang berbeda dalam skenario yang berbeda:

public interface MovableAdapter { // returns speed in KM/H double getSpeed(); } 

Implementasi antarmuka ini akan terdiri dari metode pribadi convertMPHtoKMPH () yang akan digunakan untuk konversi:

public class MovableAdapterImpl implements MovableAdapter { private Movable luxuryCars; // standard constructors @Override public double getSpeed() { return convertMPHtoKMPH(luxuryCars.getSpeed()); } private double convertMPHtoKMPH(double mph) { return mph * 1.60934; } }

Sekarang kami hanya akan menggunakan metode yang ditentukan dalam Adaptor kami, dan kami akan mendapatkan kecepatan yang dikonversi. Dalam kasus ini, pernyataan berikut akan benar:

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

Seperti yang dapat kami lihat di sini, adaptor kami mengubah 268 mph menjadi 431 km / jam untuk kasus khusus ini.

2.2. Kapan Menggunakan Pola Adaptor

  • Ketika komponen luar menyediakan fungsionalitas menawan yang ingin kami gunakan kembali, tetapi tidak kompatibel dengan aplikasi kami saat ini . Adaptor yang sesuai dapat dikembangkan untuk membuatnya kompatibel satu sama lain
  • Ketika aplikasi kami tidak kompatibel dengan antarmuka yang diharapkan klien kami
  • Ketika kami ingin menggunakan kembali kode lama dalam aplikasi kami tanpa melakukan modifikasi pada kode aslinya

3. Kesimpulan

Pada artikel ini, kita telah melihat pola desain Adaptor di Java.

Kode sumber lengkap untuk contoh ini tersedia di GitHub.