Single Responsibility Principle (SRP) - Nguyên tắc đơn trách nhiệm: 1️⃣
A class should have only one reason to change, meaning it should have only one job or responsibility.
Open/Closed Principle (OCP) - Nguyên tắc đóng/mở: 🔒 / 🔓
Software entities should be open for extension but closed for modification.
Liskov Substitution Principle (LSP) - Nguyên tắc thay thế: 🔄
Objects of a superclass should be replaceable with objects of a subclass without altering the correctness of the program.
Interface Segregation Principle (ISP)- Nguyên tắc phân tách giao diện: ✂️
No client should be forced to depend on methods it does not use. Interfaces should be small and specific.
Dependency Inversion Principle (DIP): cái Dependency Injection Pattern cũng related tới cái này nè - Nguyên tắc đảo ngược sự phụ thuộc 🔃
High-level modules should not depend on low-level modules. Both should depend on abstractions.