У меня были трудности с именами классов Decorator, поэтому я просто хотел бы знать, что делают другие. Всегда ли вы добавить слово Decorator
? Вы включаете название интерфейса, его оформление? Получают ли они свое собственное пространство имен?
Какие соглашения об именах используются для шаблона Decorator?
Ответ 1
Я избегаю использования имен шаблонов проектирования. Я думаю, что это относится к документации, если где угодно. Назовите класс/функцию декоратора после того, что он делает или представляет. Тот факт, что он украшает или мосты, или ссылки, или прокси-серверы или повторное представление, не имеет большого значения.
Каждый раз, когда вы называете строку, вы добавляете строковый суффикс? Звучит как hgrnNotation для меня, и это то, чего я стараюсь избегать.
Ответ 2
Возьмем пример из IO Framework Java API. Он широко использует шаблон декоратора, но имена классов не отражают этого. Например, BufferedReader может украсить FileReader. Но они названы в честь их функции - "Читатели".
Добавление декоратора к названию приведет к дальнейшим проблемам, если вы также включите другие шаблоны, включающие те же классы, что и часто. Вы можете получить класс с именем MyDecoratorStrategyComponent.
Ответ 3
Назовите это, что он делает.
У меня есть набор декораторов для интерфейса IPrinter. Они называются:
- PrintDisasterRecovery - исключение обработка
- PrintQueuer - делает это асинхронный вызов
Эти главы как наследуются от PrintDecorator, так что, если кто-то заглядывает под обложки, они могут видеть, что происходит.
Ответ 4
В общем случае, когда шаблон инкапсулируется в объект (по сравнению с набором объектов), тогда он становится яснее и проще включать имя шаблона в класс, в этом случае используя Decorator
в качестве суффикса. Эта работа хорошо подходит для прокси-серверов, декораторов, фабрик, адаптеров и т.д., Но не работает для других шаблонов, где требуется группа объектов для реализации шаблона, такого как мост (то есть, какой объект будет подходящим образом принимать суффикс -bridge?)