Nhiều tuyên bố rằng phần lớn nhất của các mẫu thiết kế của GoF chỉ là giải pháp cho sự vắng mặt của các hàm lớp đầu tiên. Bây giờ Java sắp sửa có được các biểu thức lambda, những mẫu nào trong số đó sẽ bị ảnh hưởng bởi chúng? Những cái nào có thể được đơn giản hóa hoặc khái quát một cách đáng kể? Và cái nào về cơ bản vẫn giữ nguyên? Bất kỳ ví dụ thực tế nào đều được chào đón.Mẫu thiết kế GoF nào sẽ bị thay đổi hoặc bị ảnh hưởng bởi việc giới thiệu lambdas trong Java8?
Trả lời
Tôi nghĩ rằng bạn sẽ thấy nhiều thay đổi nhất trong các mẫu hành vi.
Phương thức mẫu - Các phương thức mẫu sẽ ngày càng được sử dụng nhiều, và thay vào đó chúng ta sẽ thấy các đối tượng chuyển các hàm vào AbstractTemplate thay vì phân lớp AbstractTemplate. Tôi viết blog về vấn đề này một thời gian loooong trước đây: http://hamletdarcy.blogspot.ch/2007/11/groovy-closures-end-of-template-method.html
Observer Pattern - Observer trở nên đơn giản bởi vì bạn không còn cần phải giữ một danh sách các nhà quan sát mà có được cập nhật trên các sự kiện mới, nhưng thay vì giữ một danh sách các chức năng mà cần để được gọi lại về các sự kiện mới. Vì vậy, không có giao diện Observer và chỉ các đối tượng chức năng.
Mẫu chiến lược/trạng thái - Tôi nhóm chúng lại với nhau vì chúng có cấu trúc tương đương, chỉ khác nhau về ý định. Việc sử dụng chiến lược trở nên phổ biến hơn nhiều vì nó dễ thực hiện hơn. Bạn không cần một chiến lược cha mẹ và các lớp con chiến lược, bạn chỉ cần các hàm. Vì vậy, thật đơn giản để chỉ chuyển một hàm như một tham số, có hiệu lực là sử dụng mẫu chiến lược.
Nhìn chung, tôi nghĩ rằng bất kỳ mẫu nào yêu cầu giao diện một phương pháp trở nên dễ thực hiện hơn. Điều này sẽ có hai hiệu ứng. 1) Chúng tôi sẽ sử dụng các mẫu chức năng này nhiều hơn và 2) chúng tôi sẽ ngừng đề cập đến chúng như là các mẫu nhưng cũng giống như "truyền một hàm".
Bạn làm những gì bạn muốn, nhưng tôi nghĩ "JavaScript the Good Parts" mang đến một giới thiệu khá hay để tận dụng các chức năng trong một ngôn ngữ. Bạn có thể nhặt nó lên và đọc nó!
nếu một trong những nhà quan sát chấm dứt tồn tại? – Agos
Điều này xảy ra hôm nay trong ứng dụng GWT. Đăng ký một người quan sát cung cấp cho bạn một đối tượng "HandlerRegistration". Sau đó, bạn có thể gọi remove() trên đối tượng này và nó sẽ tự xóa. http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/web/bindery/event/shared/HandlerRegistration.html –
Tôi đã cố gắng tự trả lời câu hỏi này khi tôi phân tích một số mẫu GoF và đối tác chức năng của chúng với các ví dụ mã thực tế. Đặc biệt tôi đã xem xét lại: Command and Strategy, Template and Observer, Decorator and Chain of Responsibility, Interpreter and Visitor.
- 1. Mẫu thiết kế phiên bản nào bạn sẽ giới thiệu
- 2. Điều gì sẽ đến trước - mẫu thiết kế hoặc mã?
- 3. chọn các hàng bị ảnh hưởng bởi bản cập nhật
- 4. Giới thiệu về C# và Thừa kế
- 5. Thay đổi hình ảnh tùy theo hướng thiết bị
- 6. Tiện ích mở rộng tệp nào bị ảnh hưởng bởi Trusted Cache
- 7. Chặn bởi người dùng hoặc người giới thiệu trống
- 8. SqlConnection sẽ bị xử lý bởi GC?
- 9. Nhận hàng bị ảnh hưởng trên ExecuteNonQuery
- 10. Điều khiển dòng giới thiệu trên thiết bị di động trong một dòng
- 11. iOS: Thay đổi Âm lượng Thiết bị
- 12. Bắt số hàng bị ảnh hưởng bởi một UPDATE trong PostgreSQL
- 13. Kịch bản bash bị ảnh hưởng bởi bản phát hành bash4 như thế nào?
- 14. C# generics - không có giới hạn dưới bởi thiết kế?
- 15. ggplot2 Quy mô màu bị ảnh hưởng bởi các ngoại lệ
- 16. Bắt hàng bị ảnh hưởng bởi tuyên bố UPDATE trong RAW plpgsql
- 17. Giới hạn 4 GB của SQL Server Express có bị ảnh hưởng bởi các cột được kích hoạt FILESTREAM không?
- 18. Google Instant thay đổi trình giới thiệu được gửi bởi trình duyệt bằng cách nào?
- 19. Loại webapp nào có thể bị ảnh hưởng bởi lỗi nổi?
- 20. Số hàng bị ảnh hưởng Zend DB (UPDATE)
- 21. Tại sao tìm kiếm tiềm ẩn bị ảnh hưởng bởi thông số loại không liên quan?
- 22. Thiết kế mẫu trong Rails
- 23. Trả về số hàng bị ảnh hưởng bởi câu lệnh SQL UPDATE trong Java
- 24. Mẫu thiết kế cho quy trình làm việc
- 25. Các thay đổi được giới thiệu trong gcc 4.5 liên quan đến việc liên kết?
- 26. Các mẫu thiết kế/chiến lược thiết kế mới
- 27. Một số sửa đổi trên mẫu Builder được giới thiệu bởi Joshua Bloch
- 28. Amazon EC2 - Hoán đổi thiết bị lưu trữ mẫu gốc với thiết bị EBS
- 29. Thiết kế hoặc nguyên mẫu đầu tiên?
- 30. Thay đổi tiến trình Màu sắc của thiết bị
Theo Wikipedia, thuật ngữ "đường cú pháp" được đặt ra vào năm 1964. http://en.wikipedia.org/wiki/Syntactic_sugar – Huxi
"phần lớn nhất của các mẫu thiết kế GoF chỉ là giải pháp cho sự vắng mặt của các hàm lớp đầu tiên "Mặc dù tôi nghĩ rằng đó là sự thật Tôi tự hỏi làm thế nào phổ biến là loại suy nghĩ, bao nhiêu java 8/9 giúp loại bỏ loại câu chuyện – binithb