2009-06-03 2 views
6

Например, (хотя это не интерфейс) класс Stream в .NET имеет реализацию, предоставляемую Stream.Null, которая просто отбрасывает данные. У PowerShell есть Out-Null.Есть ли признанный шаблон для бесполезных объектов, реализующих интерфейс?

В приложениях, которые я разработал, мне часто было полезно реализовать интерфейс IFoo с реализацией по умолчанию NullFoo или аналогичным, когда желательно иметь бесполезную реализацию, а не передавать объект вообще.

Мой вопрос: как я должен ссылаться на эту практику при документировании или объяснении архитектуры? Есть ли признанное имя или шаблон дизайна GoF/Fowler для этого?

ответ

3

По-видимому, имеет имя, «NullObject», но вопрос может иметь разные аспекты:

с самого начала вся моя реализация проекта заключается либо на методах Stub или грузила данных.

Я использую термин «заглушка», ссылаясь на внешние интерфейсы, которые еще не имеют реализации (но уже дают вам полноценный возврат, что позволяет вам построить проект со дня 1).

Я использую «Sinker», ссылаясь на интерфейс, который позволяет мне направлять данные к нему, но на самом деле он никуда не отправляется оттуда, и это не ошибка отправителя (так что было бы громоздко закодировать «не отправьте "условие в пределах этой области).

Необходимо достичь полной сборки, а затем мы начинаем кодирование. Со временем почти все заглушки становятся функциональными (а некоторые будут обрабатывать или исходные данные), и почти все грузики становятся функциональными. В обзорах кода мы находим, что некоторые грузила может перестать существовать, другие могут быть сгруппированы, и т.д., и т.д.

1
  • объект, кажется, называется Null Object, как и другие плакаты указали
  • Если вы программируете в среде .Net вы можете следовать соглашению Microsoft, которое равно «Пустой» (как в String.Empty). См. Следующие .Net BCL Examples Search
+0

Stream.Null vs Stream.Empty – dss539

Смежные вопросы