รูปแบบ Facade เป็นโครงสร้างที่เรียบง่ายวางทับโครงสร้างที่ซับซ้อนมากขึ้น
ผู้เข้าร่วม
ระบบย่อยคือคลาสหรืออ็อบเจ็กต์ใดๆ ที่ใช้ฟังก์ชันการทำงาน แต่ Facade สามารถ "ห่อ" หรือ "ครอบคลุม" ได้เพื่อทำให้อินเทอร์เฟซง่ายขึ้น
Facade เป็นชั้นของสิ่งที่เป็นนามธรรมเหนือระบบย่อย และรู้ว่าระบบย่อยใดที่จะมอบหมายงานที่เหมาะสมให้
รูปแบบ Facade เป็นแบบทั่วไปมากจนใช้ได้กับแอปหลักๆ เกือบทุกแอป โดยเฉพาะที่ฉันไม่สามารถปรับโครงสร้างใหม่หรือแก้ไขส่วนต่างๆ ของแอปดังกล่าวได้ด้วยเหตุผลหลายประการ
ตัวอย่าง
public class HomeFacade {
LightsFacade light;
MusicSystemFacade musicSystem;
AcFacade ac;
public HomeFacade() {
light = new LightsFacade();
musicSystem = new MusicSystemFacade();
ac = new AcFacade();
}
public void LeaveHomeForOffice() {
light.SwitchOffLights();
musicSystem.SwitchOffMusicSystem();
ac.SwitchOffAc();
}
public void ArriveHomeFromOffice() {
light.SwitchOnLights();
musicSystem.SwitchOnMusicSystem();
ac.SwitchOnAc();
}
}
public class LightsFacade {
public void SwitchOnLights() {
Console.WriteLine("Switched on Lights");
}
public void SwitchOffLights() {
Console.WriteLine("Switched off Lights");
}
}
public class MusicSystemFacade {
public void SwitchOnMusicSystem() {
Console.WriteLine("Switched on MusicSystem");
}
public void SwitchOffMusicSystem() {
Console.WriteLine("Switched off MusicSystem");
}
}
public class AcFacade {
public void SwitchOnAc() {
Console.WriteLine("Switched on Ac");
}
public void SwitchOffAc() {
Console.WriteLine("Switched off Ac");
}
}