Theo logic, một mô hình giảm giá có thể là bất cứ điều gì , vì vậy bạn không thể cho rằng bạn có thể lập trình trước tất cả các trường hợp. Cũng không ai có thể trả lời câu hỏi của bạn hoàn toàn chắc chắn những gì bạn thực sự cần. Tuy nhiên, giả sử bạn nhận được các loại giảm giá thông thường được tìm thấy trong thế giới thực ...
Một câu hỏi lớn là liệu giảm giá sẽ được lập trình, hoặc nếu bạn muốn người dùng nhập chúng. Như đã đề cập ở trên, bạn không bao giờ có thể lập trình chúng, nhưng thông thường mục tiêu là cố gắng làm cho nó nhập dữ liệu nhiều hơn như đối với các trường hợp thông thường, thay vì lập trình tất cả. Điều này áp dụng cho một số mức độ ngay cả khi các lập trình viên được sử dụng để tạo ra tất cả các giảm giá.
Martin Fowler đề cập đến "Phương pháp cá nhân" trong "Các mẫu phân tích: mô hình đối tượng có thể tái sử dụng" như là một phần của cách triển khai "Quy tắc gửi bài" cho các hệ thống kế toán, nhưng các quy tắc có vẻ khá giống với bạn. Tôi sẽ cung cấp thêm chi tiết nhưng đó là một tác phẩm có bản quyền và
Đối với giao diện người dùng, bạn cần phải đưa ra các trường hợp sử dụng khá đơn giản hoặc người nào khác xây dựng trình thông dịch và trình tạo truy vấn. Có thể cả hai, một cho các trường hợp đơn giản và một nâng cao hơn. Nếu bạn viết một trình thông dịch, thì đây có thể là một trường hợp khá tốt để sử dụng mẫu Phiên dịch, vì mã tương đối đơn giản so với trình tạo trình phân tích cú pháp và thời gian phân tích chậm hơn có lẽ sẽ không thực sự quan trọng. (Nếu bạn thích sử dụng trình tạo phân tích cú pháp, đừng để tôi ngăn bạn).
Mặc dù vậy, đừng cố gắng làm mọi thứ với một thông dịch viên - tại một số điểm bạn chỉ đang lập trình bằng ngôn ngữ nhàu nát của chính mình, vì vậy bạn cũng có thể sử dụng một trình thông dịch thực sự. Nếu ngôn ngữ được giải thích của bạn hỗ trợ các chức năng (có lẽ nên hỗ trợ gọi chúng - xác định chúng là không rõ ràng) những ngôn ngữ đó có thể được mã hóa bằng ngôn ngữ thực. Đừng đi xa hơn con đường này hơn bạn phải đi.
Bất kể bạn làm gì, cuối cùng cũng có người muốn giảm giá dựa trên việc họ đã mua trong vòng 30 ngày làm việc của chương trình khuyến mãi - trong đó ngày làm việc chỉ được tính nếu không có ngày nghỉ trong khu vực được xác định bởi mã bưu chính của cửa hàng hoặc của khách hàng mã bưu điện. Vì vậy, đừng cố gắng thiết kế hệ thống hoàn hảo trước - giả sử đôi khi bạn sẽ cần phải viết mã cho các loại giảm giá mới và thiết kế phù hợp.