แบบแผนฟะซาด
แบบแผนฟะซาด (อังกฤษ: 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 (อังกฤษ)