2011-10-22 33 views
97

Có tất cả các loại nói chuyện gần đây trong cộng đồng Ruby on Rails khoảng decorators và diễn giả.Mẫu Ruby on Rails - trang trí vs người trình bày

Sự khác biệt cơ bản giữa hai yếu tố này là gì? Nếu có, đâu là manh mối cho tôi biết cái nào sử dụng cái kia? Hoặc có lẽ để sử dụng hai kết hợp?

Trả lời

88

Trình trang trí có nghĩa là "chúng ta hãy thêm một số chức năng cho thực thể này". Một người trình bày là nhiều hơn của một "hãy xây dựng một cầu nối giữa mô hình/phụ trợ và xem". Mẫu trình bày có một số cách diễn giải.

Trang trí là mục đích chung/chung. Người thuyết trình có phạm vi trách nhiệm/sử dụng hẹp hơn. Trang trí được sử dụng trên các miền, người trình bày hầu như luôn liên quan đến chức năng giống như chế độ xem.

+3

Cảm ơn. Có vẻ như đá quý Draper là một lai của người trình bày và trang trí. – keruilin

+16

@keruilin Một điều cần lưu ý: Người trang trí thực sự có thể trang trí các trang trí khác (cũng như trang trí đối tượng thành phần), bởi vì một trong những mục đích của chúng là để tránh những hạn chế của thừa kế. (Draper không * không * làm điều này). Mẫu trang trí rất giống với mẫu tổng hợp theo ý nghĩa đó, ngoại trừ việc xử lý từ bên ngoài thay vì từ trong ra ngoài (nếu có ý nghĩa). – Smudge

+5

Tôi thấy một trang trí như là một mẫu đích chung, và trình bày như một ứng dụng cụ thể của trang trí liên quan đến lớp xem. – Kris

29

Tôi đề nghị bạn kiểm tra này - Exhibit vs Presenter.

Trang trí là mẫu thiết kế được sử dụng để mở rộng chức năng của một đối tượng cụ thể bằng cách gói nó, mà không ảnh hưởng đến các trường hợp khác của đối tượng đó. Nói chung, mẫu trang trí là một ví dụ về số open/close principle (lớp được đóng để sửa đổi, nhưng có sẵn cho các phần mở rộng).

Cả mẫu trưng bày và mẫu trình bày là một loại mẫu trang trí.

+0

+1 để liên kết tới bài đăng trên blog đó của Mike Pack. Bài đăng tuyệt vời giải thích sự khác biệt giữa các mẫu. – ki4jnq

+0

+1 để đề cập đến mẫu Triển lãm. Tôi đã nhận được cuốn sách của Avdi Grimm giải thích nó. Mặc dù, nó không phải là giải pháp phù hợp cho vấn đề của tôi, nó vẫn là một mô hình tuyệt vời. Thức ăn tuyệt vời cho tư tưởng. – Yonk