Theo ý kiến của tôi, nếu bạn sử dụng đại biểu thì bạn không thực sự triển khai Strategy pattern. Bạn đang thực sự triển khai một cái gì đó giống như Observer pattern. Toàn bộ điểm của các mẫu thiết kế là khi bạn nói "Tôi đã sử dụng mẫu Chiến lược ở đây", mọi người đều có nhiều bối cảnh về những gì bạn đã làm. Khi bạn bắt đầu nói những thứ như "Tôi đã sử dụng mẫu Chiến lược ngoại trừ các sửa đổi cá nhân của riêng mình", thì mọi thứ trở nên khó chịu.
Nhưng, nếu tôi hiểu những gì bạn đang cố gắng nói, một trong những điều tốt đẹp về mẫu Chiến lược không rõ ràng với các đại biểu là bạn có thể có một hệ thống phân cấp các đối tượng thực hiện chiến lược.
Giả sử tôi đang thử nghiệm một số phần mềm. Tôi muốn thử nghiệm nó bằng cách sử dụng chuột và sử dụng bàn phím. Vì vậy, tôi sẽ thực hiện một mô hình Chiến lược để cắm vào phương thức giao diện để sử dụng cho từng trường hợp thử nghiệm ... vì vậy tôi có thể viết trường hợp thử nghiệm một lần và chạy hoàn toàn bằng cách sử dụng MouseStrategy và KeyboardStrategy. Từ đó tôi có thể thực hiện các chuyên ngành như MouseExceptForDialogsStrategy, một chuyên ngành của MouseStrategy. Loại phân cấp này, cách mở rộng và ghi đè nó có thể dễ dàng được hiểu bởi bất kỳ ai quen thuộc với khái niệm OOP ... trong khi cách để đạt được và mở rộng tương tự với các đại biểu thì phức tạp hơn và rất mơ hồ hơn nhiều.
Như với nhiều thứ ... nó không phải là một câu hỏi "bạn có thể làm điều đó?", Nhưng "bạn nên làm điều đó?".