"Kumusta, Amigo! Ngayon sasabihin ko sa iyo kung ano ang eksaktong « adapter ». Umaasa ako na pagkatapos mong malaman ang tungkol sa paksang ito ay magkakaroon ka ng mas mahusay na pag-unawa sa mga input/output stream."

Isipin na ang iyong programa ay gumagamit ng dalawang balangkas na isinulat ng ibang mga programmer/kumpanya. Ang parehong mga balangkas ay napakahusay at gumagamit ng mga prinsipyo ng OOP: abstraction, polymorphism, encapsulation. Magkasama, halos ganap nilang saklawin kung ano ang kailangang gawin ng iyong programa. Naiwan ka sa isang simpleng gawain. Kailangan mong ipasa ang mga bagay na nilikha ng isang balangkas sa kabilang balangkas. Ngunit ang parehong mga balangkas ay ganap na naiiba at "hindi alam ang tungkol sa isa't isa", ibig sabihin, wala silang anumang mga klase sa karaniwan. Kailangan mong kahit papaano ay i-convert ang mga bagay ng isang balangkas sa mga bagay ng isa pa.
Ang gawaing ito ay maaaring maayos na malulutas sa pamamagitan ng paglalapat ng " adapter " na pamamaraan (design pattern):
Java code | Paglalarawan |
---|---|
|
Sinasalamin nito ang pattern ng disenyo ng adaptor.
Ang pangunahing ideya ay ang klase ng MyClass ay nagko-convert (nag-aangkop) ng isang interface sa isa pa. |
"Maaari mo ba akong bigyan ng mas tiyak na halimbawa?"
"OK. Sabihin nating ang bawat framework ay may sariling natatanging "listahan" na interface. Maaaring ganito ang hitsura nila:"
Java code | Paglalarawan |
---|---|
|
Code mula sa unang ( Alpha ) na balangkas
Ang AlphaList ay isa sa mga interface na nagbibigay-daan sa framework code na makipag-ugnayan sa code na gumagamit ng framework. |
|
AlphaList Manager Ang AlphaListManager ay isang klase sa framework. Ang paraan ng createList ay lumilikha ng isangbagay na AlphaList |
|
Code mula sa pangalawang ( Beta ) na balangkas.
Ang BetaList ay isa sa mga interface na nagbibigay-daan sa framework code na makipag-ugnayan sa code na gumagamit ng framework. Ang BetaSaveManager ay isang klase sa framework. Ang paraan ng saveList nitobagay na BetaList |
|
Class na «Adapter» na nagko-convert mula sa AlphaList interface patungo sa BetaList interface
Ipinapatupad ng klase ng ListAdapter ang interface ng BetaList mula sa pangalawang balangkas. Kapag may tumawag sa mga pamamaraang ito, ang class code na «forward» ang mga tawag sa list variable, na isang AlphaList mula sa unang framework. Ang isang AlphaList object ay ipinasa sa ListAdapter constructor Ang paraan ng setSize ay gumagana ayon sa mga sumusunod na panuntunan: kung ang laki ng listahan ay dapat na dagdagan, magdagdag ng mga walang laman (null) na item. Kung kailangang bawasan ang laki ng listahan, tanggalin ang mga item sa dulo. |
|
Isang halimbawa kung paano ito magagamit |
"Nagustuhan ko ang iyong huling halimbawa higit sa lahat. Napaka-concise at naiintindihan."
GO TO FULL VERSION