2009-06-03 22 views
6

Ví dụ: (mặc dù đây không phải là giao diện) lớp Luồng trong .NET có triển khai do Stream.Null cung cấp, chỉ đơn giản là loại bỏ dữ liệu. PowerShell có Out-Null.Có một mẫu được công nhận cho các đối tượng vô dụng thực hiện giao diện không?

Trong các ứng dụng tôi đã phát triển, tôi thường thấy hữu ích khi triển khai giao diện IFoo với thực thi mặc định NullFoo hoặc tương tự khi thích hợp hơn để thực hiện vô dụng thay vì không truyền một đối tượng nào cả.

Câu hỏi của tôi là làm thế nào tôi nên tham khảo thực tiễn này trong việc ghi chép hoặc giải thích kiến ​​trúc? Có một tên được công nhận hoặc mô hình thiết kế GoF/Fowler cho điều này?

Trả lời

3

Rõ ràng nó có một cái tên, "NullObject", nhưng câu hỏi có thể có một khía cạnh khác nhau:

Ngay từ đầu toàn bộ triển khai thực hiện dự án của tôi bao gồm hai phương pháp Stub hoặc chì lưới dữ liệu.

Tôi sử dụng thuật ngữ "Stub" đề cập đến các giao diện bên ngoài chưa triển khai (nhưng đã mang lại cho bạn một trở lại đầy ý nghĩa, cho phép bạn xây dựng dự án từ ngày 1).

Tôi sử dụng "Sinker" đề cập đến giao diện cho phép tôi chuyển dữ liệu đến đó, nhưng thực sự nó không còn ở đâu khác, và đó không phải lỗi của người gửi (do đó sẽ rất cồng kềnh khi viết mã "không gửi "điều kiện trong phạm vi đó).

Phải đạt được một bản dựng đầy đủ, VÀ RENNG, chúng tôi bắt đầu viết mã. Với thời gian gần như tất cả các nhánh trở thành chức năng (và một số sẽ xử lý hoặc dữ liệu nguồn) và gần như tất cả các sinkers trở thành chức năng. Tại mã số nhận xét, chúng tôi thấy rằng một số chì có thể không còn tồn tại, những người khác có thể được nhóm, vv, vv

1
  • Các đối tượng dường như được gọi là Null Object, như áp phích khác đã chỉ ra
  • Nếu bạn đang lập trình trong môi trường .Net, bạn có thể muốn thực hiện theo quy ước của Microsoft là 'Trống' (như trong String.Empty). Xem như sau .Net BCL Examples Search
+0

Stream.Null vs Stream.Empty – dss539

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