Skip to content

NTDat1274/DesignPattern_Project

Repository files navigation

Dự Án Mẫu Thiết Kế: Decorator & Strategy Pattern

Sinh viên: Nguyen Tien Dat - 2212353

Mô Tả Dự Án

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

Cấu Trúc Dự Án

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

Cách Chạy Chương Trình

Bước 1: Biên dịch

cd src
javac *.java

Bước 2: Chạy

java Main

Chức Năng Menu Console

Menu Chính:

  1. Đặt cà phê - Đặt hàng với các bước tương tác
  2. Xem thông tin mẫu thiết kế - Giải thích chi tiết về 2 pattern
  3. Thoát - Thoát khỏi chương trình

Quy Trình Đặt Hàng:

  1. Bắt đầu với cà phê đen cơ bản (15,000 VND)
  2. 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
  3. Xem tóm tắt đơn hàng
  4. 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)
  5. Xác nhận thanh toán

Minh Họa Mẫu Thiết Kế

Decorator Pattern

SimpleCoffee (15,000)
  └─> MilkDecorator (+5,000)
       └─> SugarDecorator (+2,000)
            └─> Kết quả: "Cà phê đen, Sữa, Đường" - 22,000 VND

Strategy Pattern

Order
  ├─> CashPayment: Thanh toán trực tiếp
  ├─> CreditCardPayment: Thanh toán qua thẻ
  └─> MobilePayment: Thanh toán qua app

Ưu Điểm

  • ✅ 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

Công Nghệ

  • Ngôn ngữ: Java
  • Giao diện: Console Menu (Scanner)
  • Design Patterns: Decorator + Strategy

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published