Depuis des ann??es, dans les diff??rents projets sur lesquels je travaille, il y a un package que je cr??e toujours : com.masociete.monprojet.utils.patterns. Dans ce projet, je ne mets que des annotations (avant, je ne mettais que des tagging interfaces, c'est-??-dire des interfaces ne d??finissant aucune m??thode). Et ces annotations/interfaces (en fait, que ce soit l'un ou l'autre, ??a ne change absolument rien, c'est juste que les annotations sont la fa??on officielle de faire du d??claratif) ??taient souvent * @Singleton : chaque classe utilisant cette annotation est un singleton (et donc d??finit une m??thode statique getInstance() retournant un objet de cette classe) ... rassurez-vous, dans mes codes post-IoC (et plus encore post-OSGi), ??a n'existe plus. * @Factory : une classe utilisant cette interface dispose de m??thodes create* retournant des objets d'une autre classe. Dans certaines versions modernes, il y a m??me des @Factory(create=Bidule.class]).A quoi ??a sert ? A documenter le code d'une fa??on compilable. C'est-??-dire qu'au lieu de simplement dire dans la doc "c'est un singleton" sans jamais l'??crire d'une mani??re compil??e, ??a n'emp??che pas les gens d'appeler leur m??thode getThisInstanceThatIsSoCool(), ce qui sera beaucoup plus difficile ?? v??rifier. Alors que l??, je peux tout ?? fait ??crire un test param??tr?? prenant comme param??tre la liste des classes annot??es @Singleton (r??cup??rable tr??s facilement gr??ce ?? [Reflections, ou au ServiceLoader de Java6, par exemple). En fait, tout ??a, c'est dans le but encore une fois de maintenir les sp??cifications aussi pr??s du code que possible. Donc, c'est une bonne id??e.

Et ce matin, en lisant ma newsletter des javaspecialists, j'apprends que Heinz Kabutz s'int??resse aux imprimnates 3D (ce qui me permet juste de placer ce lien fascinant sur une assembleuse de mod??les Lego en Lego compl??tement automatique - la vid??o vaut son pesant de cacahu??tes), mais aussi ?? ces annotations d'architecture, pour lesquelles il a m??me cr???? le projet jpatterns. Alors ??videment, c'est du git (auquel je crois que je suis allergique by design), il n'y a pas encore d'artefact maven (mais ??a, ??a va s'arranger d??s que je vais leur parler), mais je trouve l'id??e tout ?? fait prometteuse - et surtout bien mieux impl??ment?? que ce ?? quoi je pouvais penser. En fait, ce qui est g??nial, c'est que le test dont je parlais plus haut pourrait tout ?? fait ??tre impl??ment?? par ce projet qui, en farfouillant dans le code l'utilisant, pourrait d??terminer si, de son point de vue, les patterns sont correctement impl??ment??s. Encore faut-il avoir de ces patterns une d??finition claire ...

Cela dit, vivement qu'il y ait un artefact maven ?? fourrer dans mon projet !