« Patrons de conception/Adaptateur » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 29 :
 
<source lang="cpp">
class Carre
{
public:
Carre();
Ligne 36 ⟶ 37 :
};
 
class Cercle
{
public:
Cercle();
Ligne 47 ⟶ 49 :
};
 
class CarreCoinsRondAdapter: public Carre, private Cercle
{
public:
CarreCoinsRondAdapter();
 
virtual void DessineCarre(){
SetArc1(new coordonnees(0,0));
{
SetArc2 SetArc1(new coordonnees(40,0));
SetArc3 SetArc2(new coordonnees(4,40));
SetArc4 SetArc3(new coordonnees(04,4));
SetArc1 SetArc4(new coordonnees(0,04));
// Fonction qui dessine les lignes entre les arcs
DessineCercle();
}
 
virtual coordonnees* GetQuatreCoins(){
{
return GetCoordonneesArc();
}
};
 
</source>
 
Ligne 69 ⟶ 75 :
<source lang="csharp">
/// <summary> la signature "IAdaptateur" utilisée par le client </summary>
public interface IDeveloppeur
{
string EcrireCode();
}
 
/// <summary> concrétisation normale de "IAdaptateur" par une classe </summary>
class DeveloppeurLambda : IDeveloppeur
{
public string EcrireCode() {
{
return "main = putStrLn \"Algorithme codé\"";
}
}
 
/// <summary> "Adapté" qui n'a pas la signature "IAdaptateur" </summary>
class Architecte
{
public string EcrireAlgorithme() {
{
return "Algorithme";
}
Ligne 88 ⟶ 99 :
 
/// <summary> "Adaptateur" qui encapsule un objet qui n'a pas la bonne signature</summary>
class Adaptateur : IDeveloppeur
{
Architecte _architecte;
public Adaptateur (Architecte archi) {
{
_architecte = archi;
}
public string EcrireCode() {
{
return string.Format(
"let main() = printfn \"{0} codé\"",
Ligne 104 ⟶ 118 :
 
/// <summary> "Client" qui n'utilise que les objets qui respectent la signature </summary>
class Client
{
void Utiliser(IDeveloppeur developpeur) {
{
Console.WriteLine(developpeur.EcrireCode());
}
 
static void Main() {
{
var client = new Client();