Container pattern: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
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
{
//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
|