รูปแบบ 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"); } }