2013-03-04 40 views
8

Tôi đã tự hỏi liệu chúng ta có thể xem xét các phương pháp mở rộng như là việc triển khai mẫu trang trí trong C#? vì mục đích là như nhau nhưng logic thực hiện cũng như quan niệm có thể khác nhau?Phương thức mở rộng - Mẫu trang trí

Cảm ơn!

+5

Chúng giống như thế nào với kiểu trang trí? Các phương thức mở rộng chỉ là cú pháp để gọi các phương thức tĩnh. Phương thức tĩnh là "hàm cũ cũ". Trình trang trí là khi bạn có một đối tượng mở rộng hành vi của một loại đối tượng khác bằng cách gói/ủy quyền các phương thức của nó hoặc thêm các đối tượng mới. – millimoose

+4

Tôi nghĩ rằng đây là một câu hỏi rất tốt/hợp lệ cho người mới bắt đầu. Tôi không chắc tại sao các phiếu bầu xuống .. –

+1

Tôi nghĩ rằng bạn bỏ lỡ hiểu điều gì đó. Chắc chắn một mehtod mở rộng "trang trí" một loại khi bạn nhìn vào Intelisense. Tuy nhiên, nhìn vào một trang trí trang trí tốt như 'StreamReader'. Bạn nhận thấy rằng đó là một lớp dẫn xuất từ ​​'Stream' và thực sự trang trí chức năng của Stream .. –

Trả lời

7

Mẫu trang trí thường được kết hợp với việc thêm hành vi vào các trường hợp cụ thể của một loại độc lập với các phiên bản khác. Trong trường hợp của một phương pháp mở rộng nó ảnh hưởng đến tất cả các trường hợp của một loại được biên dịch trong cùng một phạm vi. Tôi cho rằng nó không phải là một phần của mô hình trang trí.

6

Tôi nghĩ bạn không hiểu chính xác kiểu trang trí.
Không phải là thêm phương thức mới. Đó là về việc thêm chức năng mới vào các phương pháp hiện có.

Vì vậy, không, Phương pháp mở rộng không phải là triển khai mẫu trang trí.

+0

tôi thấy bây giờ, nhưng có một thực hiện concret của trang trí trong. NET không ẩn trong một số thư viện, chúng tôi từng sử dụng? – Mohtaa

+1

Tôi hiện không biết bất kỳ phần nào trên đầu, nhưng nếu bạn đang tìm kiếm một ví dụ, bạn có thể xem [đây] (http://stackoverflow.com/a/5551276/572644). Tôi đã sử dụng một cái cụ thể khi giải thích mẫu. –

Các vấn đề liên quan