Nếu khung nhìn không có sự kiện cụ thể trong giao diện của nó và gọi phương thức đơn giản của người trình bày để xử lý sự kiện và không có bất kỳ EventHandlers chính thức nào? Ví dụWebforms MVP Passive View - xử lý sự kiện
// ASPX
protected void OnSaveButtonClicked(object sender, EventArgs e)
{
_Presenter.OnSave();
}
Hoặc nên quan điểm đã EventHandlers kiện quy định tại giao diện của nó và liên kết những lên một cách rõ ràng để kiểm soát các sự kiện trên trang
// View
public interface IView
{
...
event EventHandler Saved;
...
}
// ASPX Page implementing the view
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
SaveButton.Click += delegate { Saved(this, e); };
}
// Presenter
internal Presenter(IView view,IRepository repository)
{
_view = view;
_repository = repository;
view.Saved += Save;
}
Thứ hai có vẻ như một toàn bộ rất nhiều mã hệ thống ống nước để thêm trên tất cả.
Mục đích của tôi là hiểu được lợi ích của từng phong cách chứ không phải chỉ là câu trả lời trong đó sử dụng. Mục tiêu chính của tôi là sự rõ ràng và khả năng kiểm tra giá trị cao. Testability tổng thể là quan trọng, nhưng tôi sẽ không hy sinh thiết kế đơn giản và rõ ràng để có thể thêm một loại thử nghiệm mà không dẫn đến tăng quá nhiều trong các trường hợp thử nghiệm đã có thể với một thiết kế đơn giản. Nếu một lựa chọn thiết kế không có khả năng thử nghiệm nhiều hơn, vui lòng bao gồm một ví dụ (mã giả là tốt) của loại thử nghiệm mà bây giờ nó có thể cung cấp để tôi có thể đưa ra quyết định nếu tôi đánh giá đủ loại thử nghiệm đó. Cảm ơn!
Cập nhật: Câu hỏi của tôi có cần làm rõ thêm không?