fbpx
วิกิพีเดีย

อะแดปเตอร์ แพตเทิร์น

อะแดปเตอร์แพตเทิร์น (Adapter pattern) หรือ แร็ปเปอร์แพตเทิร์น (wrapper pattern) หรือเรียกสั้นๆว่า แร็ปเปอร์ (wrapper) เป็นดีไซน์แพตเทิร์นที่ใช้ในกรณีที่ รูปแบบการเชื่อมต่อของคลาสผู้เรียกและผู้ถูกเรียก ไม่สัมพันธ์กัน ดังนั้นจึงต้องใช้อะแดปเตอร์คลาสเข้ามาช่วยเป็นตัวกลาง ทำการเชื่อมต่อให้สามารถมาเรียกใช้งานกันได้

โครงสร้างอะแด๊ปเตอร์แพตเทิร์น

จากรูป ผู้เรียก (target) ต้องการเรียกใช้งาน เม็ทธอด SpecificRequset() แต่ไม่สามารถเรียกโดยตรงได้ เนื่องจากรูปแบบการเชื่อมต่อไม่สัมพันธ์กัน ดังนั้นจึงสร้าง คลาส Adapter มาเพื่อเรียกใช้งานผ่าน เม็ทธอด Request() ให้ไปเรียก เม็ทธอด SpecificRequest() อีกต่อหนึ่ง

ตัวอย่างการใช้อะแด๊ปเตอร์แพตเทิร์น

      

ตัวอย่างที่โปรแกรมที่แสดง เป็นวิธีการนำอะแดปเตอร์แพตเทิร์นมาใช้งานจริง โดยสมมุติว่า มีแลปทอปอยู่เครื่องหนึ่ง ในการเปิดใช้งานต้องใช้ไฟฟ้าแรงดัน 110 โวลต์ แต่ไฟฟ้าที่บ้านแรงดัน 220 โวลต์ ดังนั้นจึงต้องใช้อะแดปเตอร์เข้ามาช่วย

class MainApp { public static void main(String[] args) { LapTop mylabtop = new LapTop(new Adapter(new Power(220))); mylabtop.powerOn(); } } 

แสดงการสร้างอินสแตนท์ของ คลาส LabTop โดยจะทำการสร้างอินสแตนท์ของคลาส Power กำหนดแรงดันให้เป็น 220 โวลต์ ขึ้นมาก่อน และนำอินสแตนท์ที่ได้นั้นไปสร้าง อินสแตนท์ของอะแดปเตอร์เพื่อทำการแปลงแรงดันไฟฟ้าเป็น 110 โวลต์ จากนั้นนำอินสแตนท์ของคลาสอะแดปเตอร์ที่แปลงแล้ว ไปสร้างอินสแตนท์ของ คลาส Laptop อีกที สุดท้ายสั่งเปิดเครื่อง หากใช้ขนาดแรงดันไฟฟ้าถูก จะแสดงคำว่า Power On ขึ้นมา

class LapTop { private int laptopvoltage; private Target target; LapTop(Target t) { target = t; laptopvoltage = target.getVoltage(); } public void powerOn() { if(laptopvoltage == 110) System.out.println("Power On"); else System.out.println("Over Voltage"); } } 

แสดง คลาส LapTop ซึ่งจะไปเรียก เม็ทธอด getValtage() ผ่านตัวแปร target

abstract class Target { abstract public int getVoltage(); } class Adapter extends Target { private Power adaptee; public Adapter(final Power a) { adaptee = a; } public int getVoltage() { return adaptee.getVoltage()/2; } } 

แสดง การสร้างคลาส Adapter ซึ่งสืบทอดมาจากแอ็บสแตรกคลาส Target และทำการ override เม็ทธอด getVoltage ขึ้นมา ซึ่งทำหน้าที่แปลงแรงดันไฟฟ้า 220 โวลต์เป็น 110 โวลต์

class Power { private int voltage; Power(int voltage) { this.voltage = voltage; } public int getVoltage() { return voltage; } } 

แสดงคลาส Power ซึ่งมีคอนสตรัคเตอร์ ที่กำหนดค่าแรงดันไฟฟ้าได้ และมีเม็ทธอด getValtage ที่ส่งค่าระดับแรงดันไฟฟ้าออกมา

อ้างอิง

แหล่งข้อมูลอื่น

อะแดปเตอร, แพตเท, อะแดปเตอร, แพตเท, adapter, pattern, หร, แร, ปเปอร, แพตเท, wrapper, pattern, หร, อเร, ยกส, นๆว, แร, ปเปอร, wrapper, เป, นด, ไซน, แพตเท, นท, ใช, ในกรณ, ปแบบการเช, อมต, อของคลาสผ, เร, ยกและผ, กเร, ยก, ไม, มพ, นธ, งน, นจ, งต, องใช, อะแดปเตอร, คลา. xaaedpetxraephtethirn Adapter pattern hrux aerpepxraephtethirn wrapper pattern hruxeriyksnwa aerpepxr wrapper epndiisnaephtethirnthiichinkrnithi rupaebbkarechuxmtxkhxngkhlasphueriykaelaphuthukeriyk imsmphnthkn dngnncungtxngichxaaedpetxrkhlasekhamachwyepntwklang thakarechuxmtxihsamarthmaeriykichnganknid enuxha 1 okhrngsrangxaaedpetxraephtethirn 2 twxyangkarichxaaedpetxraephtethirn 3 xangxing 4 aehlngkhxmulxunokhrngsrangxaaedpetxraephtethirn aekikhcakrup phueriyk target txngkareriykichngan emththxd SpecificRequset aetimsamartheriykodytrngid enuxngcakrupaebbkarechuxmtximsmphnthkn dngnncungsrang khlas Adapter maephuxeriykichnganphan emththxd Request ihiperiyk emththxd SpecificRequest xiktxhnungtwxyangkarichxaaedpetxraephtethirn aekikh twxyangthiopraekrmthiaesdng epnwithikarnaxaaedpetxraephtethirnmaichngancring odysmmutiwa miaelpthxpxyuekhruxnghnung inkarepidichngantxngichiffaaerngdn 110 owlt aetiffathibanaerngdn 220 owlt dngnncungtxngichxaaedpetxrekhamachwy class MainApp public static void main String args LapTop mylabtop new LapTop new Adapter new Power 220 mylabtop powerOn aesdngkarsrangxinsaetnthkhxng khlas LabTop odycathakarsrangxinsaetnthkhxngkhlas Power kahndaerngdnihepn 220 owlt khunmakxn aelanaxinsaetnththiidnnipsrang xinsaetnthkhxngxaaedpetxrephuxthakaraeplngaerngdniffaepn 110 owlt caknnnaxinsaetnthkhxngkhlasxaaedpetxrthiaeplngaelw ipsrangxinsaetnthkhxng khlas Laptop xikthi sudthaysngepidekhruxng hakichkhnadaerngdniffathuk caaesdngkhawa Power On khunma class LapTop private int laptopvoltage private Target target LapTop Target t target t laptopvoltage target getVoltage public void powerOn if laptopvoltage 110 System out println Power On else System out println Over Voltage aesdng khlas LapTop sungcaiperiyk emththxd getValtage phantwaepr target abstract class Target abstract public int getVoltage class Adapter extends Target private Power adaptee public Adapter final Power a adaptee a public int getVoltage return adaptee getVoltage 2 aesdng karsrangkhlas Adapter sungsubthxdmacakaexbsaetrkkhlas Target aelathakar override emththxd getVoltage khunma sungthahnathiaeplngaerngdniffa 220 owltepn 110 owlt class Power private int voltage Power int voltage this voltage voltage public int getVoltage return voltage aesdngkhlas Power sungmikhxnstrkhetxr thikahndkhaaerngdniffaid aelamiemththxd getValtage thisngkharadbaerngdniffaxxkmaxangxing aekikhhttp xnanoob exteen com 20080416 adapter pattern http en wikipedia org wiki Adapter patternaehlngkhxmulxun aekikhhttp www vbdotnetheaven com UploadFile rajeshvs AdapterPattern05272005031848AM AdapterPattern aspx Adapter Pattern in VB NET http www c sharpcorner com UploadFile rajeshvs AdapterPatternInCS11142005005135AM AdapterPatternInCS aspx Adapter Pattern in C ekhathungcak https th wikipedia org w index php title xaaedpetxr aephtethirn amp oldid 9355095, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม