Adapter

Design Pattern

Type : structuration

 Permet de faire fonctionner un objet

avec une interface

qu'il ne possède pas

Objectif

Est utilisé lorsqu'une classe que l'on veut utiliser

et son interface ne corresponde pas à nos besoins.

Créer une classe réutilisable qui n'a pas besoin 

d'avoir des interfaces compatibles.

Motivation

Participants

Target (interface)

 

  • Interface avec laquelle le client va interagir

Client

  • Utilise l'interface Target pour envoyer des requêtes

Adapter

  • Transmet les requêtes du client à l'adaptee

Adaptee

  • Interface existante qui a besoin d'être adaptée pour le besoin du client

Exemple d'utilisation

Shape

Rectangle

Circle

xxxColor

RedColor

BlueColor

le pattern Bridge

sans

xxxColor

RedColor

BlueColor

Exemple d'utilisation

Shape

Rectangle

Circle

le pattern Bridge

avec

xxxColor

RedColor

BlueColor

Color

Bridge

public class NumberSorter{   
  public List<Integer> sort(List<Integer> numbers){        
    return new ArrayList<Integer>();   
  }
}

Adaptee


int[] numbers = new int[]{34, 2, 4, 12, 1};            
Sorter sorter = new SortListAdapter();      
sorter.sort(numbers);

Client


public interface Sorter{   
  public int[] sort(int[] numbers);
}

Target

public class SortListAdapter implements Sorter{  
  @Override   public int[] sort(int[] numbers)   {     
    //convert the array to a List     
    List<Integer> numberList = new ArrayList<Integer>();           
    //call the adapter      
    NumberSorter sorter = new NumberSorter();    
    numberList = sorter.sort(numberList);         
    //convert the list back to an array and return          
    return sortedNumbers; 
  }  
}

Adapter

Copy of deck

By Dany Chea

Copy of deck

  • 47