"Halo, Amigo! Dina iki aku bakal pitutur marang kowe apa persis " adaptor ". Muga-muga sawise sinau babagan topik iki sampeyan bakal duwe pangerten sing luwih apik babagan aliran input / output."

Adaptor - 1

Bayangake program sampeyan nggunakake rong kerangka kerja sing ditulis dening programer / perusahaan liyane. Loro kerangka kasebut apik banget lan nggunakake prinsip OOP: abstraksi, polimorfisme, enkapsulasi. Bebarengan, meh padha nutupi apa sing kudu ditindakake program sampeyan. Sampeyan ditinggal karo tugas sing prasaja. Sampeyan kudu ngirim obyek sing digawe dening siji framework menyang framework liyane. Nanging loro frameworks temen beda lan "ora ngerti bab saben liyane", IE padha ora duwe kelas ing umum. Sampeyan kudu piye wae ngowahi obyek saka siji framework menyang obyek liyane.

Tugas iki bisa ditanggulangi kanthi apik kanthi nggunakake teknik " adaptor " (pola desain):

kode Jawa Katrangan
class MyClass implements Interface2
{
 private Interface1 object;
 MyClass(Interface1 object)
 {
  this.object = object;
 }
// This is where we put the Interface2 methods 
// that call Interface1 methods
}
Iki nuduhake pola desain adaptor.

Ing idea dhasar iku kelas MyClass ngowahi (adaptasi) siji antarmuka kanggo liyane.

"Apa sampeyan bisa menehi conto sing luwih spesifik?"

"OK. Ayo dadi ngomong sing saben framework wis unik dhewe "dhaftar" antarmuka. Padha bisa katon kaya iki: "

kode Jawa Katrangan
interface AlphaList
{
 void add(int value);
 void insert(int index, int value);
 int get(int index);
 void set(int index, int value);
 int count();
 void remove(int index);
}
Kode saka framework pisanan ( Alfa ) .

AlphaList minangka salah sawijining antarmuka sing ngidini kode kerangka bisa sesambungan karo kode sing nggunakake kerangka kasebut.

class AlphaListManager
{
 public static AlphaList createList()
 {
  //some code to create an object
 }
}
AlphaList Manager AlphaListManager minangka kelas ing framework. Cara createList nggaweobyek AlphaList
interface BetaList
{
 int getValue(int index);
 void setValue(int index, int value);
 int getSize();
 void setSize(int newSize);
}
class BetaSaveManager
{
 public static void saveList(BetaList list)
 {
  //some code to save a BetaList object
  //to a file on disk
 }
}
Kode saka framework kapindho ( Beta ).

BetaList minangka salah sawijining antarmuka sing ngidini kode kerangka bisa sesambungan karo kode sing nggunakake kerangka kasebut.

BetaSaveManager minangka kelas ing kerangka. Cara saveList nyimpenobyek BetaList

class ListAdapter implements BetaList
{
 private AlphaList list;
 ListAdapter(AlphaList list)
 {
  this.list = list;
 }

 int getValue(int index)
 {
  return this.list.get(index);
 }

 void setValue(int index, int value)
 {
  this.list.set(index, value);
 }

 int getSize()
 {
  return this.list.count();
 }

 void setSize(int newSize)
 {
  if (newSize > this.list.count()
  {
   while (this.list.count() < newSize)
  {
   this.list.add(null);
  }
 }
 else if (newSize < this.list.count() {
   while (this.list.count() > newSize)
   {
    list.remove(list.count() - 1);
   }
  }
 }
}
Kelas «Adaptor» sing ngowahi saka antarmuka AlphaList menyang antarmuka BetaList

Kelas ListAdapter ngetrapake antarmuka BetaList saka kerangka kapindho.

Nalika wong nelpon cara iki, kode kelas «forward» nelpon kanggo variabel dhaftar , kang AlphaList saka framework pisanan.

Objek AlphaList diterusake menyang konstruktor ListAdapter

Cara setSize beroperasi miturut aturan ing ngisor iki: yen ukuran dhaptar kudu ditambah, tambah item kosong (null). Yen ukuran dhaptar kudu dikurangi, mbusak item ing pungkasan.

public static void main(String[] args)
{
 AlphaList listAlpha = AlphaListManager.createList();
 BetaList listBeta = new ListAdapter(listAlpha);
 BetaSaveManager.saveList(listBeta);
}
Conto carane bisa digunakake

"Aku paling seneng conto pungkasan sampeyan. Banget ringkes lan bisa dingerteni."