Những mẫu thiết kế GOF nào đã được triển khai như các tính năng ngôn ngữ hạng nhất trong C #?


10

(Câu hỏi này đã bị đóng trên Stack Overflow do "quá rộng" và "không phải là một câu hỏi thực sự" vì vậy có lẽ nó phù hợp hơn ở đây?)

Lấy cảm hứng từ câu hỏi này . Chúng tôi biết các sự kiện là một triển khai ở cấp độ ngôn ngữ của mẫu Người quan sát. Có các mẫu thiết kế khác được triển khai như các tính năng ngôn ngữ trong C # không? Tôi muốn giữ câu hỏi này C #-cụ thể vì có rất nhiều mẫu thiết kế được triển khai bằng các ngôn ngữ khác và tôi muốn giữ tập trung này.

Tôi không tìm kiếm triển khai mẫu trong BCL (chẳng hạn như trang trí trong nhiều lớp WCF hoặc Phương thức xuất xưởng WebClient), nhưng các mẫu ở cấp độ ngôn ngữ .

Cho đến nay tôi biết về observer ( event) và iterator ( foreachkết hợp với nhiều lớp và giao diện BCL). Có lẽ có những cái rõ ràng khác tôi đang thiếu.

Câu trả lời:


1

Các đại biểu là mô hình chiến lược thực tế


thật buồn cười, mới hôm qua một đồng nghiệp đã nói rằng các đại biểu là một triển khai mẫu lệnh. Tôi phụ thuộc vào cách bạn nhìn vào nó, tôi đoán (lệnh afaik cũng sẽ gói gọn các đối số, nhưng trong trường hợp phương thức không có đối số ..)
stijn

1
Tôi sẽ không nói rằng các đại biểu đang thực hiện các mẫu lệnh, ít nhất tôi không thể thấy cách bạn có thể thực hiện những việc như hoàn tác / làm lại chỉ bằng cách sử dụng các đại biểu. Chúng có thể là một phần của một đối tượng chỉ huy nhưng đó là một vấn đề khác
Homde

0

Các phương thức mở rộng là một sự trừu tượng của mẫu Trang trí.


Không hẳn vậy. Decorator cho phép chúng ta sáng tác các đối tượng trong thời gian chạy để thêm dữ liệu và hành vi.
Martin Doms

1
Đúng - vì vậy chúng gần như không hữu ích như các mẫu trang trí thực sự. Sẽ tốt hơn để nói rằng phần lớn các vấn đề được giải quyết bằng các phương pháp mở rộng được giải quyết với các mẫu trang trí trong các ngôn ngữ khác?
vstrien
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.