Шаблоны проектирования кодируются в Java код как придётся. Их названия даже включаются в имена классов или записаны в Javadoc'и. К несчастью невозможно точно определить шаблон только основываясь на структуре класса без знаний намерений автора кода.
Помочь решить эту проблему может библиотека JPatterns созданная Michael Hunger и Heinz Kabutz.
JPatterns это коллекция аннотаций которе делают простым взаимодействие использования шаблонов проектирования с вашим кодом для ваших разработчиков и вами самими в будущем. Библиотека следует принципу KISS используя резонные умолчания для атрибутов аннотации. Так, если вы пишете Компоновщик (англ. Composite pattern), вы можете просто указать:
@CompositePattern
public abstract class Contact {
public abstract void sendMail(String msg);
public void add(Contact contact) {}
public void remove(Contact contact) {}
}
Или, если хотите, вы можете также указать точнее, например:@CompositePattern(role = CompositeRole.COMPONENT,
participants = {DistributionList.class, Person.class})
public abstract class Contact {
public abstract void sendMail(String msg);
public void add(Contact contact) {}
public void remove(Contact contact) {}
}
JavaDoc проекта впечатляет: реализованы аннотации для GoF, JEE и PLoPD.
Этот проект поможет улучшить качество кода относительно малой кровью.
Например недавно я написал плагин-инспекцию для Idea который проверяет корректность реализации шаблона Одиночка (англ. Singleton pattern). Проверяется в частности что конструктор объявлен приватным. И мне пришлось определять Singleton чисто по наличию метода getInstance(), т.е. практически наугад. Если бы классы-одиночки были бы отмечены аннотацией @SingletonPattern, то жизнь стала бы ярче.
Кстати в Groovy уже давно есть две стандартные аннотации для шаблонов проектирования: @Singleton и
@Immutable. А в Идее даже есть инспекции которые проверяют классы по этом аннотациям.
Репозиторий проекта находится на GitHub и ждёт героев готовых помочь проекту ;)
Ещё этими же авторами была создана библиотека аннотаций качества кода AtCode. Не очень впечатляет хотя тоже полезная.
Ну и в заключение хочу напомнить про прекрасную коллекцию аннотаций от Google про которую писали в первоапрельской статье на Хабре.
Комментариев нет:
Отправить комментарий