« 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));▼
{
// 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();
|