Từ Examples of GoF Design Patterns in Java's core libraries câu hỏi, nó đã được trích dẫn rằngVí dụ về mẫu lệnh java với lớp Runnable: Bộ nhận có bị thiếu không?
Tất cả các triển khai của java.lang.Runnable là ví dụ về lệnh mẫu.
Theo sự hiểu biết của tôi về mẫu Command,
Khách hàng gọi Invoker =>Invoker gọi ConcreteCommand =>ConcreteCommand cuộc gọi Receiver phương pháp, mà thực hiện trừu tượng Lệnh phương thức.
Có một cái nhìn tại example
mẫu Command sơ đồ UML làm việc này từ this article được hiển thị như dưới đây.
Có một cái nhìn tại mã này:
public class ThreadCommand{
public static void main(String args[]){
Thread t = new Thread(new MyRunnable());
t.start();
}
}
class MyRunnable implements Runnable{
public void run(){
System.out.println("Running:"+Thread.currentThread().getName());
}
}
- ThreadCommand là Khách hàng
- Runnable giao diện là lệnh
- MyRunnable là ConcreteCommmand
- Chủ đề là Invoker với
start()
phương pháp gọi ConcreteCommand implementaiton (trong đó kêu gọirun()
phương pháp)
là Receiver thiếu ở đây? Hay MyRunnable có thể đóng vai trò kết hợp của ConcreteCommand và Receiver?
Đối tượng * người nhận * là loại đại diện cho logic nghiệp vụ của ứng dụng. Trách nhiệm của một lệnh không phải là sở hữu logic nghiệp vụ, nhưng để lộ logic nghiệp vụ này cho các máy khách bằng cách sử dụng một giao diện chung và tiêu chuẩn, tức là phương thức 'execute'. Sau đó, tôi nghĩ rằng người nhận không chỉ đơn thuần là di tích của C/C++. –