Sinh viên: Nguyen Tien Dat - 2212353
Hệ thống đặt hàng quán cà phê sử dụng 2 mẫu thiết kế:
- Decorator Pattern: Thêm topping động vào cà phê
- Strategy Pattern: Chọn phương thức thanh toán linh hoạt
src/
├── Coffee.java # Interface chính cho Decorator Pattern
├── SimpleCoffee.java # Concrete Component
├── CoffeeDecorator.java # Base Decorator
├── MilkDecorator.java # Decorator thêm sữa
├── SugarDecorator.java # Decorator thêm đường
├── WhippedCreamDecorator.java # Decorator thêm kem tươi
├── PaymentStrategy.java # Interface cho Strategy Pattern
├── CashPayment.java # Strategy thanh toán tiền mặt
├── CreditCardPayment.java # Strategy thanh toán thẻ
├── MobilePayment.java # Strategy thanh toán di động
├── Order.java # Context class
└── Main.java # Main program với menu console
cd src
javac *.javajava Main- Đặt cà phê - Đặt hàng với các bước tương tác
- Xem thông tin mẫu thiết kế - Giải thích chi tiết về 2 pattern
- Thoát - Thoát khỏi chương trình
- Bắt đầu với cà phê đen cơ bản (15,000 VND)
- Chọn topping (có thể thêm nhiều topping):
- Sữa: +5,000 VND
- Đường: +2,000 VND
- Kem tươi: +8,000 VND
- Xem tóm tắt đơn hàng
- Chọn phương thức thanh toán:
- Tiền mặt
- Thẻ tín dụng (nhập thông tin thẻ)
- Thanh toán di động (MoMo/ZaloPay/VNPay)
- Xác nhận thanh toán
SimpleCoffee (15,000)
└─> MilkDecorator (+5,000)
└─> SugarDecorator (+2,000)
└─> Kết quả: "Cà phê đen, Sữa, Đường" - 22,000 VND
Order
├─> CashPayment: Thanh toán trực tiếp
├─> CreditCardPayment: Thanh toán qua thẻ
└─> MobilePayment: Thanh toán qua app
- ✅ Tính linh hoạt cao: Thêm topping và chọn thanh toán dễ dàng
- ✅ Dễ mở rộng: Thêm topping/phương thức mới không ảnh hưởng code cũ
- ✅ Tuân thủ SOLID: Open/Closed, Single Responsibility
- ✅ Code sạch và dễ maintain
- Ngôn ngữ: Java
- Giao diện: Console Menu (Scanner)
- Design Patterns: Decorator + Strategy