SOLID

SOLID

2021, Nov 09    

Giải thích về nguyên lý SOLID

I. S.O.L.I.D

1. Single Responsibility Principle

A class should have one, and only one, reason to change. In other words, every class should have only one responsibility

Mỗi class chỉ nên phục vụ 1 nhiệm vụ duy nhất

2. Open/Closed Principle

Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification

  • Các thần phần của một phần mềm như classes, modules, functions, … nên dễ mở rộng, nhưng hạn chế sửa đổi.

  • Có thể hiểu mục đích priciple này nói rằng khi thêm một chức năng mới thì nên kế thừa để mở rộng, chứ không chỉnh sửa trên class đã có. Tuy nhiên, việc này nên tùy thuộc vào ngữ cảnh thực tế, việc kế thùa sẽ tạo ra nhiều class và sẽ gây rối chương trình hơn.

3. Liskov Substitution Principle

Derived classes must be substitutable for their base classes.

  • Với nguyên tắc này có nghĩa là, ta có thể thay thế một class cha bằng một class con mà chương trình vẫn đúng đắn.

4. Interface Segregation Principle

Many client-specific interfaces are better than one general-purpose interface

  • Nên phân tách một interface lớn thành các interface nhỏ hơn, cho từng nhiệm vụ, mục đích cụ thể hơn.

  • Nguyên tắc này khá dễ hiểu, vì nếu một interface lớn quá, dẫn đến implementation sẽ phải implement các method không cần thiết và dư thừa.

5. Dependency Inversion Principle

Depend on abstractions, not on concretions.

  • Module cấp cao không phụ thuộc vào module cấp thấp, cả 2 chỉ nên phụ thuộc vào abstraction.

  • Abstraction không nên phụ thuộc vào detail (implementation), mà ngược lại implementation phụ thuộc vào abstraction. (Các class giao tiếp với nhau thông qua interface, không phải thông qua implementation.)

  • Giải thích một tí: abstraction là những cái ít thay đổi, thường nó tập hợp những đặc tính chung nhất. Nên phụ thuộc vào abstraction sẽ giúp cho chương trình linh hoạt hơn, thích ứng với các sự thay dổi.

II. Reference