Professional Documents
Culture Documents
Solid Principle
Solid Principle
Solid Principle
Một class nếu giữ quá nhiều chức năng sẽ trở nên cồng kềnh. Với sự phát triển của ứng dụng
dẫn tới sự thay đổi của code. Nếu 1 class có quá nhiều chức năng thì sẽ khó thay đổi, tốn nhiều tg
thay đổi và còn có thể ảnh hưởng đến nhiều module khác ==>để dễ dàng cho việc bảo trì và mở rộng
sau này thì nên thiết kế theo hướng Single Responsibility
2. Open-closed Principle
Nên hạn chế việc thay đổi 1 class mà thay vào đó hãy xem xét để mở rộng
+) Hạn chế sửa đổi : K nên chỉnh sửa soure code của một module hay một class có sẵn vì nó sẽ
làm ảnh hưởng đến tính đúng đắn của chương trình.
+) Ưu tiên mở rộng: Khi cần thêm chức năng mới nên kế thừa và mở rộng các module có sẵn
thành các module con lớn hơn. Các module con có sẵn đặc tính của lớp cha, vừa được bổ sung tính
năng mới phù hợp với yêu cầu
- Có thể chia thành phần chung để cho tất cả sự dụng và phần rieeng biệt cho từng interface
hoặc class implement
5. Dependendcy Inversion:
Mỗi thành phần của hệ thống chỉ nên phụ thuộc vào các abstracttion hoặc interface, không nên
phụ thuộc vào các lớp cụ thể
Interface Engine{}
Class ChinaEngine implement Engine{}
Class Car {
// một loại engine nào đó, lợi dụng tính đa hình trong OOP
Private Engine engine;
// Khi khởi tạo Car thì tạo engine trước rồi inject vào constructor này
Public Car(Engine engine){
This.engine = engine;
}
}
Với code sau khi sửa đổi lúc này mqh giữa Cả và ChinaEngine đã lỏng lẻo hơn rất nhiều chúng ta
dễ dàng thêm các loại động cơ khác vào
Ý nghĩa thứ 2: abstraction không nên phụ thuộc vào chi tiết, mà ngược lại
chúng ta chỉ cần biết abstraction Engine có method là run, còn những loại động cơ khác
nhau thực hiện run như thế nào (chi tiết) thì không cần quan tâm