Tôi hiện đã viết một vài ứng dụng bằng cách sử dụng diễn viên scala và tôi quan tâm đến cách mọi người tiếp cận hoặc xử lý một số vấn đề tôi gặp phải.Viết các ứng dụng với diễn viên Scala trong thực tế
Rất nhiều lớp thư hoặc!?
Tôi có một diễn viên phản ứng với hoạt động của người dùng và phải gây ra điều gì đó xảy ra. Giả sử nó react
s tới một tin nhắn UserRequestsX(id)
. Một vấn đề liên tục tôi có là, bởi vì tôi muốn mô đun hóa các chương trình của mình, một diễn viên đơn lẻ không thể hoàn thành hành động mà không liên quan đến các diễn viên khác. Ví dụ, giả sử tôi cần sử dụng tham số id
để truy xuất một loạt các giá trị và sau đó chúng cần được xóa thông qua một số tác nhân khác. Nếu tôi đang viết một chương trình Java bình thường, tôi có thể làm một cái gì đó như:
public void reportTrades(Date date) {
Set<Trade> trades = persistence.lookup(date);
reportService.report(trades);
}
Đơn giản là đủ. Tuy nhiên, việc sử dụng diễn viên này trở nên hơi đau vì tôi muốn tránh sử dụng !?
. Một diễn viên phản ứng với thông báo ReportTrades(date)
nhưng nó phải yêu cầu PersistenceActor
cho các giao dịch và sau đó là ReportActor
để báo cáo. Cách duy nhất tôi đã tìm thấy để làm điều này là để làm:
react {
case ReportTrades(date) =>
persistenceActor ! GetTradesAndReport(date)
}
Vì vậy mà trong PersistenceActor
của tôi, tôi có một khối phản ứng:
react {
case GetTradesAndReport(date) =>
val ts = trades.get(date) //from persietent store
reportActor ! ReportTrades(ts)
}
Nhưng bây giờ tôi có 2 vấn đề:
- Tôi phải tạo các lớp thông báo bổ sung để đại diện cho cùng một yêu cầu (nghĩa là "giao dịch báo cáo"). Trong thực tế, tôi có ba trường hợp này nhưng tôi có thể có nhiều hơn nữa - nó sẽ trở thành một vấn đề theo dõi các số
- Tôi nên gọi thông điệp đầu tiên và thứ ba
ReportTrades
? Thật khó hiểu khi gọi cả hai sốReportTrades
(hoặc nếu tôi làm vậy, tôi phải đặt chúng trong các gói riêng biệt). Về cơ bản không có điều như vậy làoverloading
một lớp học theo loạival
.
Tôi đang thiếu cái gì? Tôi có thể tránh điều này không? Tôi có nên bỏ cuộc và sử dụng !?
Mọi người có sử dụng một số cấu trúc tổ chức để làm rõ điều gì đang xảy ra không?
Có an toàn khi truy cập cửa hàng liên tục trực tiếp trong "phản ứng" không? Tôi nghĩ bạn không thể chặn các hoạt động.Có lẽ "nhận" là cần thiết cho diễn viên cụ thể đó. –