Vì tôi đã sử dụng Grails nhiều hơn và nhiều hơn nữa, tôi thấy mình viết mã trong nhiều bộ điều khiển mà thực sự có vẻ như nó phải là một phần của một lớp miền. Đôi khi, mã miền này chứa một cuộc gọi đến một lớp dịch vụ. Ví dụ, gần đây tôi đã viết một phương pháp miền trông giống như sau:Thiết kế xấu có thể gọi dịch vụ Grails từ các đối tượng miền không?
class Purchase {
// Injected
def paymentService
String captureTransactionId
Boolean captured
// ...
def capture() {
captureTransactionId = paymentService.capturePurchase(this)
captured = captureTransactionId != null
}
Tôi không cảm thấy hoàn toàn dơ bẩn mã này, nhưng tôi chưa thực hiện một nghiên cứu về thực hành thiết kế tốt nhất trong Grails, vì vậy tôi muốn nhận được một số ý kiến.
Nhận xét muộn: khi nào các dịch vụ được tiêm? Ví dụ: nếu bạn tải 10.000 Giao dịch mua từ cơ sở dữ liệu, thì dịch vụ paymentService có được chèn vào chúng không? Hiệu suất sẽ bị ảnh hưởng đáng kể. – wishihadabettername
@ User277434 - Hibernate không thực sự có ý nghĩa để thực hiện loại tải hàng loạt này. Nếu tôi có nhiều bản ghi này để tải cùng một lúc, tôi có thể bỏ qua sử dụng chế độ ngủ đông hoặc sử dụng truy vấn có phép chiếu để tránh tạo đối tượng. –