Какое соглашение об именах вы используете для шаблона декоратора?[закрыто]
-
03-07-2019 - |
Вопрос
Совсем недавно я по-настоящему проникся внедрением зависимостей и чудом шаблона проектирования «Декоратор» и использую его повсюду.
Однако, как бы это ни было замечательно, у меня возникли трудности с присвоением имен моим классам декораторов, поэтому мне просто хотелось бы знать, что делают другие.Вы всегда добавляете слово «Декоратор»?Вы включаете имя интерфейса в его украшение?Получают ли они собственное пространство имен?
Что вы, ребята, делаете?
Решение
Я избегаю использования имен шаблонов дизайна. Я думаю, что это относится к документации, если где-нибудь. Назовите класс / функцию декоратора после того, что он делает или представляет. Факт, что это украшает или соединяет или связывает или прокси или повторно представляет, имеет небольшое значение. Р>
Каждый раз, когда вы называете строку, вы добавляете суффикс строки? Похоже, hgrnNotation для меня, и это то, что я стараюсь избегать.
Другие советы
Возьмите пример из IO Framework Java API. Он широко использует шаблон декоратора, но имена классов не отражают этого. Например, BufferedReader может украшать FileReader, но они названы в честь их функции - Readers.
Добавление декоратора к имени может привести к дальнейшим проблемам, если вы также включите другие шаблоны, включающие те же классы, что и часто. Вы можете получить класс с именем MyDecoratorStrategyComponent.
Назовите это тем, что оно делает.
У меня есть несколько декораторов для интерфейса IPrinter.Их называют:
- PrintDisasterRecovery - обработка исключений
- PrintQueuer - делает его асинхронным вызовом
Оба эти компонента наследуют от PrintDecorator, поэтому, если кто-то заглянет под обложку, он сможет увидеть, что происходит.
Обычно, когда шаблон инкапсулирован в объект (по сравнению с коллекцией объектов), проще и проще включить имя шаблона в класс, в этом случае используя Decorator
в качестве суффикса. Это хорошо работает для прокси-серверов, декораторов, фабрик, адаптеров и т. Д., Но не работает для других шаблонов, где при реализации шаблона, например моста, требуется группа объектов, например мост (т.е. какой объект должен иметь суффикс -bridge?) р>