Désignation chaînée

Un article de Wikipédia, l'encyclopédie libre.

En génie logiciel, une désignation chaînée ou chaînage de méthodes (fluent pattern) consiste à agir en une seule instruction sur plusieurs méthodes du même objet, dans un but de plus grande lisibilité.

L'idée principale est qu'au lieu de qualifier chaque méthode par le nom de l'objet correspondant, ce qui conduisait à une lourdeur de style, ce nom d'objet reste par défaut actif dans toute l'instruction en cours. L'économie de verbosité est du même ordre (bien que sur des principes différents) que celle que permettait l'expression with en langage Pascal et en Visual Basic

Le contexte est :

  • défini par la valeur de retour de la méthode appelée
  • transmis à la méthode suivante
  • terminé par le retour d'un contexte vide.

Le code est ainsi à la fois plus concis et plus clair.

Exemples[modifier | modifier le code]

C++[modifier | modifier le code]

Le mécanisme des entrées-sortie caractères de C++ par << et >> permet le chaînage de méthodes :

std::cout << "Hello world!" << std::endl

PHP[modifier | modifier le code]

Voici un exemple en PHP :

<?php
	class car {
		private $speed;
		private $color;
		private $doors;
 	 
		public function setSpeed($speed){
			$this->speed = $speed;
			return $this;
		}
 	 
		public function setColor($color) {
			$this->color = $color;
			return $this;
		}
 	 
		public function setDoors($doors) {
			$this->doors = $doors;
			return $this;
		}
	}
  
	// Exemple avec chaînage de méthodes 

	$myCar = new car();
	$myCar->setSpeed(100)->setColor('blue')->setDoors(5);
	
	// Exemple sans chaînage de méthodes

	$myCar2 = new car();
	$myCar2->setSpeed(100);
	$myCar2->setColor('blue');
	$myCar2->setDoors(5);
?>

Java[modifier | modifier le code]

public class Car {
    private int speed;
    private String color;
    private int doors;
    
    /* Constructeur */
    
    public Car setSpeed(int speed)c {
        this.speed = speed;
        return this;
    }
    
    public Car setColor(String color) {
        this.color = color;
        return this;
    }
    
    public Car setDoors(int doors) {
        this.doors = doors;
        return this;
    }
}

Exemple sans le chainage des méthodes[modifier | modifier le code]

Car car = new Car()
car.setSpeed(100);
car.setColor("blue");
car.setDoors(5);

Exemple avec le chainage des méthodes[modifier | modifier le code]

Car car = new Car();
car.setSpeed(100).setColor(blue).setDoors(5);