Ainsi un Client va déléguer à un objet la responsabilité d’exécuter une action qui sera elle-même déléguée une fois réalisée a un autre objet qui poursuivra l'action en question.
Par exemple, on peut imaginer un besoin lié a la gestion de données vis a vis d'une base consistant a récupérer des données, les traiter, pour les réinjecter mis à jour dans la base.
La chaîne de responsabilité va permettre de modéliser ce processus voir de faciliter son évolution
En Groovy cela donnera un code pas optimiser similaire a celui ci:
En Java 8 avec les lambda expression, on trouvera rapidement des écritures permettant de simplifier grandement l’implémentation de ce pattern. Ainsi, on résumera donc le pattern chaîne de responsabilité par le diagramme de classe suivant:abstract class Responsable
{
Responsable suivant
abstract def traitementReq()
}
class Client
{
Responsable responsable=new RecuperationData();
def mettreAjourData()
{
responsable.traitementReq();
}
}
class RecuperationData extends Responsable
{
def traitementReq()
{
println "recup"
suivant=new TraiterData();
suivant.traitementReq();
}
}
class TraiterData extends Responsable
{
def traitementReq()
{
println "traitement"
suivant=new SauverData();
suivant.traitementReq();
}
}
class SauverData extends Responsable
{
def traitementReq()
{
println "sauvegarde"
}
}
def client=new Client();
client.mettreAjourData();
A noter que rien ne précise comment passer au suivant, ici dans l'exemple on l'instancie a la volée, mais les objets peuvent être fourni via une factory.
Aucun commentaire:
Enregistrer un commentaire