ฟะซาดแพตเทิร์น
จากวิกิพีเดีย สารานุกรมเสรี
ฟะซาดแพตเทิร์น (ภาษาอังกฤษ 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 (ISBN 0-201-63361-2) โดย Erich Gamma, Richard Helm, Ralph Johnson และ John Vlissides (Gang of four: GoF)
[แก้] แหล่งข้อมูลอื่น
- Facade โดย Vince Huston ((อังกฤษ))