Tôi không đồng ý với thiết kế trên :
- Vi phạm chữ S trong SOLID: " 1 class chỉ nên thực hiện 1 trách nhiệm".
- Nhiều devs có thể làm việc trên cùng 1 dự án và sửa cùng class cho cùng 1 lí do, điều nãy có thể dẫn đến việc ko tương thích giữa các modules. -> giảm xung đột vì mỗi 1 class chỉ có 1 lí do để thay đổi .
-method print vô lí : nếu chủ quán muốn thay đổi format in thì cta lại phải thay đổi class order ( vi phạm chữ O - closed for modification) .
- chủ quán muốn lưu trữ dữ liệu 2 nơi , thiết kế chưa giải quyết điều đó :
tạo orderPrint OrderUtil
- áp dụng nguyên tắc đảo ngược phụ thuộc( chữ D) để tạo interface OrderUtil với 2 phương thức save and load và cho lớp kế thừa, ( tính chất đa hình OOP)
- Nên tách phương thức printOrder(), saveTo,...ra .
- Khiến cho ct dễ kiểm soát hơn,
bài 2 : thiết kế vi phạm chữ L nếu thêm tính năng thanh toán bằng thẻ kế thừa paymentstryment. thay đổi thiết kế :