แบบแผนอะแดปเตอร์ (Adapter pattern) เป็นแบบแผนการออกแบบซอฟต์แวร์ ที่ใช้เชื่อมการทำงานระหว่างคลาสผู้เรียกและคลาสที่ถูกเรียกในกรณีที่คลาสที่ถูกเรียกมีเมธอดที่แตกต่างจากที่ผู้เรียกคาดหวัง ตัวอย่างที่เห็นได้ในชีวิตประจำวันเช่น หม้อแปลงไฟฟ้า หรือปลั๊กไฟที่มีขาต่างรูปทรงต่างกันจะต้องมีตัวแปลงเพื่อต่อเชื่อมเป็นต้น
การนำไปใช้งาน
การสร้างคลาสสำหรับทำหน้าที่เป็นอะแด็ปเตอร์สามารถทำได้สองวิธีดังนี้
วิธีการแบบ inheritance ให้คลาสอะแด็ปเตอร์ซับคลาสจากคลาสที่จะถูกใช้งานจริงและให้อิมพลิเมนท์อินเตอร์เฟสตามที่คลาสผู้เรียกคาดหวัง ความสัมพันธ์ระหว่างผู้แปลงและผู้ถูกแปลงจะเป็นในแบบ is-a ดังภาพประกอบ
วิธีการแบบ delegation ให้คลาสอะแด็ปเตอร์อิมพลิเมนท์อินเตอร์เฟสตามที่คลาสผู้เรียกคาดหวังแต่ไม่ต้องซับคลาส คลาสอะแด็ปเตอร์เรียกเมธอดของคลาสที่จะถูกใช้งานผ่านทางอ็อบเจกต์ของคลาสที่ถูกใช้งานนั้น ความสัมพันธ์ระหว่างผู้แปลงและผู้ถูกแปลงจะเป็นในแบบ has-a ดังภาพ
ตัวอย่างโปรแกรม
ภาษาจาวา
ซอร์สโค้ดอะแด็ปเตอร์แบบ inheritance
public class Adapter extends Adaptee implements ExpectedInterface { public void doWork() { actualDoWork(); } }
ซอร์สโค้ดอะแด็ปเตอร์แบบ delegation
public class Adapter implements ExpectedInterface { private Adaptee adaptee; public void doWork() { adaptee.actualDoWork(); } }
อินเตอร์เฟสที่โค้ดผู้เรียกคาดหวัง
public interface ExpectedInterface { public void doWork(); }
คลาสที่ถูกแปลง
public class Adaptee { public void actualDoWork() { // do work } }
การเรียกใช้งาน
expectedInterface.doWork();
อ้างอิง
- Design Patterns: Elements of Reusable Object-Oriented Software () โดย Erich Gamma, Richard Helm, Ralph Johnson และ John Vlissides (Gang of four: GoF)
แหล่งข้อมูลอื่น
- Adopt Adapter 2007-02-05 ที่ เวย์แบ็กแมชชีน โดย David Geary (อังกฤษ)
- Design Patterns in Java: Adapter[] โดย Steven John Metsker (อังกฤษ)
- อะแด็ปเตอร์แพตเทิร์น โดย อนุภาค มาตรมูล(ไทย)
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
aebbaephnxaaedpetxr Adapter pattern epnaebbaephnkarxxkaebbsxftaewr thiichechuxmkarthanganrahwangkhlasphueriykaelakhlasthithukeriykinkrnithikhlasthithukeriykmiemthxdthiaetktangcakthiphueriykkhadhwng twxyangthiehnidinchiwitpracawnechn hmxaeplngiffa hruxplkifthimikhatangrupthrngtangkncatxngmitwaeplngephuxtxechuxmepntnkarnaipichngankarsrangkhlassahrbthahnathiepnxaaedpetxrsamarththaidsxngwithidngni withikaraebb inheritance ihkhlasxaaedpetxrsbkhlascakkhlasthicathukichngancringaelaihximphliemnthxinetxrefstamthikhlasphueriykkhadhwng khwamsmphnthrahwangphuaeplngaelaphuthukaeplngcaepninaebb is a dngphaphprakxb khlasidxaaekrmkhxngaebbaephnxaaedpetxrchnid inheritance inaebb UML withikaraebb delegation ihkhlasxaaedpetxrximphliemnthxinetxrefstamthikhlasphueriykkhadhwngaetimtxngsbkhlas khlasxaaedpetxreriykemthxdkhxngkhlasthicathukichnganphanthangxxbecktkhxngkhlasthithukichngannn khwamsmphnthrahwangphuaeplngaelaphuthukaeplngcaepninaebb has a dngphaph khlasidxaaekrmkhxngaebbaephnxaaedpetxrchnid delegation inaebb UMLtwxyangopraekrmphasacawa sxrsokhdxaaedpetxraebb inheritance public class Adapter extends Adaptee implements ExpectedInterface public void doWork actualDoWork sxrsokhdxaaedpetxraebb delegation public class Adapter implements ExpectedInterface private Adaptee adaptee public void doWork adaptee actualDoWork xinetxrefsthiokhdphueriykkhadhwng public interface ExpectedInterface public void doWork khlasthithukaeplng public class Adaptee public void actualDoWork do work kareriykichngan expectedInterface doWork xangxingDesign Patterns Elements of Reusable Object Oriented Software ISBN 0 201 63361 2 ody Erich Gamma Richard Helm Ralph Johnson aela John Vlissides Gang of four GoF aehlngkhxmulxunAdopt Adapter 2007 02 05 thi ewyaebkaemchchin ody David Geary xngkvs Design Patterns in Java Adapter lingkesiy ody Steven John Metsker xngkvs xaaedpetxraephtethirn ody xnuphakh matrmul ithy