แบบแผนฟะซาด (อังกฤษ: Façade pattern, Facade pattern) เป็นแบบแผนการออกแบบซอฟต์แวร์เพื่อช่วยให้การเรียกใช้งานคลาสต่างๆ ในระบบที่ซับซ้อนทำได้ง่ายขึ้น แบบแผนฟะซาดได้ชื่อมาจากส่วนตกแต่งด้านหน้าของอาคาร ที่ทำเพื่อความสวยงามและซ่อนโครงสร้างของตัวตึก ตัวอย่างที่เห็นได้ในชีวิตประจำวันเช่น เกียร์รถยนต์แบบอัตโนมัติที่ผู้ใช้ไม่จำเป็นต้องกังวลกับรายละเอียดวิธีการเปลี่ยนเกียร์ เป็นต้น
การนำไปใช้งาน
ถ้าเรามีคลาสกลุ่มหนึ่ง (หรือแม้แต่คลาสเดียว) ที่มีวิธีการเรียกใช้งานที่สลับซับซ้อน เราสามารถซ่อนรายละเอียดวิธีการเรียกใช้งานนี้โดยสร้างคลาสขึ้นมาเพื่อทำหน้าที่เป็นฟะซาด และรวบรวมโค้ดที่ซับซ้อนไว้ในเมธอดของคลาสฟะซาดที่ง่ายต่อการเรียกใช้งาน คลาสผู้ใช้บริการเพียงเรียกเมธอดของคลาสฟะซาด โดยไม่จำเป็นต้องรู้รายละเอียดนอกเหนือไปจากนี้
ตัวอย่างโปรแกรม
ภาษาจาวา
ซอร์สโค้ดของฟะซาดเพื่อช่วยเขียนไฟล์ (เรียกใช้ File
และ FileWriter
) และอ่านไฟล์ (เรียกใช้ File
, FileReader
และ BufferedReader
)
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FileFacade { public void write (String filePath, String content) { File file = new File (filePath) ; FileWriter fileWriter = null; try { fileWriter = new FileWriter (file) ; fileWriter.write (content) ; fileWriter.flush () ; } catch (IOException e) { e.printStackTrace () ; } finally { if (fileWriter != null) { try { fileWriter.close () ; } catch (IOException e) { e.printStackTrace () ; } } } } public String read (String filePath) { StringBuilder sb = new StringBuilder () ; File file = new File (filePath) ; BufferedReader bufferedReader = null; try { FileReader fileReader = new FileReader (file) ; bufferedReader = new BufferedReader (fileReader) ; String s; while ((s = bufferedReader.readLine ()) != null) { sb.append (s) ; } } catch (FileNotFoundException e) { e.printStackTrace () ; } catch (IOException e) { e.printStackTrace () ; } finally { if (bufferedReader != null) { try { bufferedReader.close () ; } catch (IOException e) { e.printStackTrace () ; } } } return sb.toString () ; } }
การเรียกใช้งาน
String filePath = "filefacade.txt"; FileFacade ff = new FileFacade () ; // write to file ff.write (filePath, "Hello World!") ; // read from file String content = ff.read (filePath) ;
อ้างอิง
- Design Patterns: Elements of Reusable Object-Oriented Software () โดย Erich Gamma, Richard Helm, Ralph Johnson และ John Vlissides (Gang of four: GoF)
แหล่งข้อมูลอื่น
- โดย Vince Huston (อังกฤษ)
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
aebbaephnfasad xngkvs Facade pattern Facade pattern epnaebbaephnkarxxkaebbsxftaewrephuxchwyihkareriykichngankhlastang inrabbthisbsxnthaidngaykhun aebbaephnfasadidchuxmacakswntkaetngdanhnakhxngxakhar thithaephuxkhwamswyngamaelasxnokhrngsrangkhxngtwtuk twxyangthiehnidinchiwitpracawnechn ekiyrrthyntaebbxtonmtithiphuichimcaepntxngkngwlkbraylaexiydwithikarepliynekiyr epntnkarnaipichnganthaeramikhlasklumhnung hruxaemaetkhlasediyw thimiwithikareriykichnganthislbsbsxn erasamarthsxnraylaexiydwithikareriykichnganniodysrangkhlaskhunmaephuxthahnathiepnfasad aelarwbrwmokhdthisbsxniwinemthxdkhxngkhlasfasadthingaytxkareriykichngan khlasphuichbrikarephiyngeriykemthxdkhxngkhlasfasad odyimcaepntxngruraylaexiydnxkehnuxipcakni UML khlasidxaaekrmkhxngaebbaephnfasadtwxyangopraekrmphasacawa sxrsokhdkhxngfasadephuxchwyekhiynifl eriykich File aela FileWriter aelaxanifl eriykich File FileReader aela BufferedReader import java io BufferedReader import java io File import java io FileNotFoundException import java io FileReader import java io FileWriter import java io IOException public class FileFacade public void write String filePath String content File file new File filePath FileWriter fileWriter null try fileWriter new FileWriter file fileWriter write content fileWriter flush catch IOException e e printStackTrace finally if fileWriter null try fileWriter close catch IOException e e printStackTrace public String read String filePath StringBuilder sb new StringBuilder File file new File filePath BufferedReader bufferedReader null try FileReader fileReader new FileReader file bufferedReader new BufferedReader fileReader String s while s bufferedReader readLine null sb append s catch FileNotFoundException e e printStackTrace catch IOException e e printStackTrace finally if bufferedReader null try bufferedReader close catch IOException e e printStackTrace return sb toString kareriykichngan String filePath filefacade txt FileFacade ff new FileFacade write to file ff write filePath Hello World read from file String content ff read filePath 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 aehlngkhxmulxunody Vince Huston xngkvs