1. Gambaran keseluruhan
Dalam tutorial ringkas ini, kita akan melihat corak Adapter dan pelaksanaan Java-nya.
2. Corak Penyesuai
Corak Adaptor bertindak sebagai penyambung antara dua antara muka yang tidak serasi yang sebaliknya tidak dapat dihubungkan secara langsung. Adaptor membungkus kelas yang ada dengan antara muka baru sehingga menjadi serasi dengan antara muka klien.
Motif utama di sebalik penggunaan corak ini adalah untuk menukar antara muka yang ada ke antara muka lain yang diharapkan pelanggan. Ia biasanya dilaksanakan setelah aplikasi dirancang.
2.1. Contoh Corak Penyesuai
Pertimbangkan senario di mana terdapat aplikasi yang dikembangkan di AS yang mengembalikan kelajuan tertinggi kereta mewah dalam mil per jam (MPH). Sekarang kita perlu menggunakan aplikasi yang sama untuk pelanggan kita di UK yang menginginkan hasil yang sama tetapi dalam kilometer per jam (km / j).
Untuk mengatasi masalah ini, kami akan membuat penyesuai yang akan menukar nilai dan memberi kami hasil yang diinginkan:

Pertama, kami akan membuat antara muka asli Bergerak yang sepatutnya mengembalikan kelajuan beberapa kereta mewah dalam batu per jam:
public interface Movable { // returns speed in MPH double getSpeed(); }
Kami sekarang akan membuat satu pelaksanaan konkrit antara muka ini:
public class BugattiVeyron implements Movable { @Override public double getSpeed() { return 268; } }
Sekarang kita akan membuat antara muka penyesuai MovableAdapter yang akan berdasarkan kelas Bergerak yang sama . Ia mungkin sedikit diubah untuk menghasilkan hasil yang berbeza dalam senario yang berbeza:
public interface MovableAdapter { // returns speed in KM/H double getSpeed(); }
Pelaksanaan antara muka ini akan terdiri daripada kaedah peribadi MPMPttoKMPH () yang akan digunakan untuk penukaran:
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 kita hanya akan menggunakan kaedah yang ditentukan dalam Adaptor kita, dan kita akan mendapatkan kelajuan yang ditukar. Dalam kes ini, pernyataan berikut akan berlaku:
@Test public void whenConvertingMPHToKMPH_thenSuccessfullyConverted() { Movable bugattiVeyron = new BugattiVeyron(); MovableAdapter bugattiVeyronAdapter = new MovableAdapterImpl(bugattiVeyron); assertEquals(bugattiVeyronAdapter.getSpeed(), 431.30312, 0.00001); }
Seperti yang kita perhatikan di sini, penyesuai kita menukar 268 mph menjadi 431 km / j untuk kes ini.
2.2. Bilakah Menggunakan Corak Penyesuai
- Apabila komponen luar menyediakan fungsi menawan yang ingin kita gunakan semula, tetapi tidak sesuai dengan aplikasi kita sekarang . Penyesuai yang sesuai dapat dikembangkan untuk menjadikannya serasi antara satu sama lain
- Apabila aplikasi kami tidak sesuai dengan antara muka yang diharapkan pelanggan kami
- Apabila kita ingin menggunakan semula kod lama dalam aplikasi kita tanpa membuat pengubahsuaian pada kod asal
3. Kesimpulannya
Dalam artikel ini, kita melihat pola reka bentuk Adapter di Java.
Kod sumber penuh untuk contoh ini boleh didapati di GitHub.