Какое соглашение об именах вы используете для шаблона декоратора?[закрыто]

StackOverflow https://stackoverflow.com/questions/222369

Вопрос

Совсем недавно я по-настоящему проникся внедрением зависимостей и чудом шаблона проектирования «Декоратор» и использую его повсюду.

Однако, как бы это ни было замечательно, у меня возникли трудности с присвоением имен моим классам декораторов, поэтому мне просто хотелось бы знать, что делают другие.Вы всегда добавляете слово «Декоратор»?Вы включаете имя интерфейса в его украшение?Получают ли они собственное пространство имен?

Что вы, ребята, делаете?

Это было полезно?

Решение

Я избегаю использования имен шаблонов дизайна. Я думаю, что это относится к документации, если где-нибудь. Назовите класс / функцию декоратора после того, что он делает или представляет. Факт, что это украшает или соединяет или связывает или прокси или повторно представляет, имеет небольшое значение.

Каждый раз, когда вы называете строку, вы добавляете суффикс строки? Похоже, hgrnNotation для меня, и это то, что я стараюсь избегать.

Другие советы

Возьмите пример из IO Framework Java API. Он широко использует шаблон декоратора, но имена классов не отражают этого. Например, BufferedReader может украшать FileReader, но они названы в честь их функции - Readers.

Добавление декоратора к имени может привести к дальнейшим проблемам, если вы также включите другие шаблоны, включающие те же классы, что и часто. Вы можете получить класс с именем MyDecoratorStrategyComponent.

Назовите это тем, что оно делает.

У меня есть несколько декораторов для интерфейса IPrinter.Их называют:

  • PrintDisasterRecovery - обработка исключений
  • PrintQueuer - делает его асинхронным вызовом

Оба эти компонента наследуют от PrintDecorator, поэтому, если кто-то заглянет под обложку, он сможет увидеть, что происходит.

Обычно, когда шаблон инкапсулирован в объект (по сравнению с коллекцией объектов), проще и проще включить имя шаблона в класс, в этом случае используя Decorator в качестве суффикса. Это хорошо работает для прокси-серверов, декораторов, фабрик, адаптеров и т. Д., Но не работает для других шаблонов, где при реализации шаблона, например моста, требуется группа объектов, например мост (т.е. какой объект должен иметь суффикс -bridge?)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top