Bộ điều khiển nhận danh sách một số Trái cây từ người dùng. Bộ điều khiển cần phải làm cho nước ép từ mỗi loại trái cây này. Một máy ép trái cây có thể làm cho nước trái cây ra khỏi cam và bưởi; một máy ép trái cây khác biết làm nước trái cây từ táo, chuối và đu đủ; và vân vân. Mỗi máy ép trái cây có thể chấp nhận nhiều trái cây trong một lần, nó sẽ chỉ xử lý các loại trái cây có khả năng và bỏ qua các trái cây khác bị ảnh hưởng. Vui lòng đề xuất một thiết kế phù hợp cho vấn đề này. Tôi đã cân nhắc các tùy chọn sau:Thiết kế mô hình lựa chọn tiến thoái lưỡng nan
- Cuộc gọi điều khiển
MasterJuicer.juice(List<Fruit> fruits)
.MasterJuicer
lần lượt gọiCitrusJuicer.juice(fruits)
vàPulpyJuicer.juice(fruits)
. - Chuỗi trách nhiệm có vẻ không đúng. Thứ tự mà Juicers được gọi là không quan trọng.
- Nhà máy? Bộ điều khiển gọi số
JuicerFactory.getJuicers(List<Fruit> fruits)
để nhận sốList<Juicer>
. Bộ điều khiển sau đó lặp lại từng máy ép trái cây và gọiJuicer.juice(fruits)
. Nó là phổ biến cho một nhà máy để trả lại một danh sách các trường hợp? - Duy trì đăng ký Fruit vs. Juicer trong
Map
? Bộ điều khiển gọiFruitsRegistry.getJuicer(Fruit fruit)
cho mỗi quả, sau đó gọi mỗi Máy ép trái cây trong một vòng lặp.
Câu trả lời rất hấp dẫn. Tôi sẽ nhai qua những ý tưởng này một lúc và xem làm thế nào những lợi ích của kịch bản kinh doanh thực sự của tôi. Và cảm ơn cho các liên kết đến các công cụ quét classpath! – Somu