"Halo, Amigo! Hari ini saya akan memberi tahu Anda apa sebenarnya « adaptor » itu. Saya harap setelah mempelajari topik ini, Anda akan memiliki pemahaman yang jauh lebih baik tentang aliran input/output."
Bayangkan program Anda menggunakan dua kerangka kerja yang ditulis oleh programmer/perusahaan lain. Kedua framework tersebut sangat bagus dan menggunakan prinsip OOP: abstraksi, polimorfisme, enkapsulasi. Bersama-sama, mereka hampir sepenuhnya mencakup apa yang perlu dilakukan oleh program Anda. Anda pergi dengan tugas sederhana. Anda harus meneruskan objek yang dibuat oleh satu framework ke framework lainnya. Tetapi kedua kerangka kerja itu sama sekali berbeda dan "tidak tahu satu sama lain", yaitu mereka tidak memiliki kelas yang sama. Anda perlu mengubah objek dari satu kerangka kerja menjadi objek kerangka kerja lainnya.
Tugas ini dapat diselesaikan dengan indah dengan menerapkan teknik « adaptor » (pola desain):
kode jawa | Keterangan |
---|---|
|
Ini mencerminkan pola desain adaptor.
Ide dasarnya adalah kelas MyClass mengonversi (menyesuaikan) satu antarmuka ke antarmuka lainnya. |
"Bisakah Anda memberi saya contoh yang lebih spesifik?"
"Oke. Katakanlah setiap kerangka kerja memiliki antarmuka "daftar" uniknya sendiri. Mereka mungkin terlihat seperti ini:"
kode jawa | Keterangan |
---|---|
|
Kode dari kerangka pertama ( Alfa ).
AlphaList adalah salah satu antarmuka yang memungkinkan kode framework berinteraksi dengan kode yang menggunakan framework. |
|
AlphaList Manager AlphaListManager adalah kelas dalam kerangka kerja. Metode createList-nya membuatobjek AlphaList |
|
Kode dari kerangka kedua ( Beta ).
BetaList adalah salah satu antarmuka yang memungkinkan kode framework berinteraksi dengan kode yang menggunakan framework. BetaSaveManager adalah kelas dalam kerangka kerja. Metode saveList -nyamenyimpanobjek BetaList |
|
Kelas «Adapter» yang mengonversi dari antarmuka AlphaList ke antarmuka BetaList
Kelas ListAdapter mengimplementasikan antarmuka BetaList dari kerangka kerja kedua. Saat seseorang memanggil metode ini, kode kelas «meneruskan» panggilan ke variabel daftar , yang merupakan AlphaList dari kerangka kerja pertama. Objek AlphaList diteruskan ke konstruktor ListAdapter Metode setSize beroperasi menurut aturan berikut: jika ukuran daftar harus ditambah, tambahkan item kosong (null). Jika ukuran daftar perlu dikurangi, hapus item di bagian akhir. |
|
Contoh bagaimana itu bisa digunakan |
"Saya paling menyukai contoh terakhir Anda. Sangat ringkas dan mudah dipahami."
GO TO FULL VERSION