Tôi đã sử dụng mẫu lệnh trong một thời gian khá lâu nhưng tôi không bao giờ thực sự chắc chắn rằng tôi thực sự có thể đưa bao nhiêu logic vào Execute
phương thức.
Việc triển khai mẫu lệnh hiện tại của tôi trông tương tự như sau:
public abstract class Command
{
public static event EventHandler Completed = delegate { };
public bool Success { get; private set; }
public Exception Exception {get; private set; }
public abstract bool Execute();
protected bool OnCompleted(bool success, Exception ex = null)
{
Success = success;
Exception = ex;
Completed(this, EventArgs.Empty)
return success;
}
}
và đây là những câu hỏi mà tôi tự hỏi mình (và thực hành trong các mệnh lệnh của mình):
- Có thể hiển thị hộp messege hoặc hộp thoại mở tập tin, vv?
- Có thể đặt thuộc tính của bất kỳ đối tượng nào không?
- Một lệnh có thể chứa logic kinh doanh?
- Một lệnh có thể sửa đổi các điều khiển GUI trong anyway?
- Những lệnh lớp nào thuộc về? Xem hoặc lớp dữ liệu? Tôi có thể có các lệnh trong cả hai lớp không?
- Một lệnh có thể làm tất cả những gì trước đây là trong
button1_Click
? - Có nên ra lệnh bằng đơn vị kiểm tra?
- Một lệnh có thể được xem như là một người dùng sử dụng API và xây dựng lớp cuối cùng của ứng dụng và cũng là biện pháp cuối cùng để bắt ngoại lệ không?
- Các lệnh có thể được thực thi bằng mã (lệnh gọi api, api chạy và cuối cùng một số api khác gọi lệnh) hoặc chỉ người dùng có thể gọi nó và API không được biết về sự tồn tại?
- Có chỗ nào cho các lệnh trong MVC hoặc MVVC hoặc bất kỳ mẫu thiết kế nào khác với bộ điều khiển không? Họ dường như là loại trừ lẫn nhau. Cái gì thích hơn?
Có rất nhiều hướng dẫn chỉ ra cách thực hiện mẫu lệnh nhưng không thực sự thảo luận về cách áp dụng nó trong một ứng dụng wold thực sự.