« Patrons de conception/Objet composite » : différence entre les versions
Contenu supprimé Contenu ajouté
m robot Ajoute: bg:Композиция (шаблон) |
Aucun résumé des modifications |
||
Ligne 282 :
doc.pdf
dir3
===Exemple C#===
Produisant un résultat similaire à l'exemple en php, une variante en C#.
<source lang=csharp>
abstract class Composant {
public string Nom;
public int Level = 0;
public abstract void Add(Composant composant);
public virtual void Draw() {
for (var i = 0; i < Level; i++) Console.Write(" ");
}
}
class Feuille : Composant {
public override void Add(Composant composant) {
throw new NotImplementedException();
}
public override void Draw() {
base.Draw();
Console.WriteLine("Feuille : {0}", Nom);
}
}
class Composite : Composant {
public Composant[] Composants;
public override void Add(Composant composant) {
Composants = Composants.Concat(new Composant[] { composant}).ToArray();
}
public override void Draw() {
base.Draw();
Console.WriteLine("Composite : {0}", Nom);
foreach (Composant composant in Composants) {
composant.Level = this.Level + 1;
composant.Draw();
}
}
}
class Program {
static void Main(string[] args) {
var cadre = new Composite() {
Nom = "cadre",
Composants = new Composant[] {
new Feuille() { Nom="soleil" },
new Composite() {
Nom = "mer",
Composants = new Composant[] {
new Composite() {
Nom="bateau",
Composants = new Composant[] {
new Feuille() { Nom="homme" },
new Feuille() { Nom="femme" }}}}}}};
cadre.Draw();
Console.ReadLine();
}
}
</source>
[[Catégorie:Patron de conception]]
|