คืออะไร Inversion of Control
การกลับด้านของการควบคุมในสถาปัตยกรรม
Inversion of Control (IoC) คือหลักการออกแบบที่การควบคุมการไหลของโปรแกรมถูกโอนจากโค้ดแอปพลิเคชันไปยังเฟรมเวิร์กหรือคอนเทนเนอร์ภายนอก
รูปแบบ IoC หลัก
- Dependency Injection (DI) — ฉีด dependencies ผ่าน constructor, setter หรือ interface
- Service Locator — registry ของบริการแบบรวมศูนย์
- Factory Pattern — สร้างอ็อบเจกต์ผ่าน factories
- Template Method — กำหนดโครงสร้างอัลกอริทึมในคลาสฐาน
ประโยชน์ของ IoC
- การเชื่อมต่อแบบหลวมระหว่างส่วนประกอบ
- ทดสอบง่ายขึ้นผ่าน mocks
- การกำหนดค่า dependency ที่ยืดหยุ่น
- ความสามารถในการใช้โค้ดซ้ำ
IoC Containers ที่นิยม
- Spring (Java) — IoC container ที่นิยมที่สุด
- ASP.NET Core DI — DI ในตัวใน .NET
- InversifyJS — IoC สำหรับ TypeScript/JavaScript
- Autofac, Ninject — ทางเลือกสำหรับ .NET