Container pattern: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Fumo (discussione | contributi)
Nessun oggetto della modifica
Fumo (discussione | contributi)
Nessun oggetto della modifica
Riga 8:
 
== Esempio ==
 
Nell'esempio proposto, scritto in [[C_sharp|C#]], si vuole estendere il metodo ''drinkSomething'' della classe Guy. Qui di seguito è mostrata la soluzione con l'uso di una classe derivata.
<source lang="csharp">
class Guy
Line 21 ⟶ 23:
//...
}
//Pratica consueta: ereditarietà
 
//Pratica consueta: ereditarietà
//Derivo dalla classe Guy
class Gentleman : Guy
{
//Chiamata al costruttore (base)
Line 38 ⟶ 39:
//...
}
</source>
 
Questa invece è la risoluzione del problema con l'uso del Container Pattern. É sottointeso che il metodo ''drinkSomething'' non sia più dichiarato virtual.
<source lang="csharp">
class Gentleman
{
//Chiamata al costruttore (base)
//Campo della classe Gentleman:
//istanza della classe Guy
Guy johnny = new Guy();
//...
public void drinkSomething()
{
//chiamata al metodo della classe madre
//algoritmo base
johnny.drinkSomething();
//aggiunta
Console.WriteLine("Would you like some?");
}
//...
}
</source>
 
{{Design Patterns Patterns}}
 
Line 45 ⟶ 67:
[[Categoria:Programmazione ad oggetti]]
 
<!-- Fumo, - last: 11/04/2009 -->