Container pattern: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: fix wl, replaced: Design Patterns patterns → Design pattern |
|||
(21 versioni intermedie di 14 utenti non mostrate) | |||
Riga 1:
{{S|
Il '''Container Pattern''' (anche detto Containment Pattern) è un modello specifico della [[programmazione ad oggetti]] che permette in certi casi una migliore gestione dell'[[Incapsulamento (informatica)|incapsulamento]]. Più che un costrutto, come ogni [[Design pattern]] il Container è una buona pratica da seguire per scrivere codice più intelligente e soprattutto sicuro.
== Funzionamento e Utilizzo ==
Il modello proposto risolve il problema del ''"cracking"'' (della rottura) dell'Incapsulamento in situazioni di [[
== Esempio ==
<source lang="csharp">▼
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.
class Guy
{
Line 21 ⟶ 23:
//...
}
//Pratica consueta: ereditarietà▼
▲//Pratica consueta: ereditarietà
//Derivo dalla classe Guy
{
//Chiamata al costruttore (base)
Line 38 ⟶ 39:
//...
}
</syntaxhighlight>
Questa invece è la risoluzione del problema con l'uso del Container Pattern. È sottinteso che il metodo ''drinkSomething'' non sia più dichiarato virtual.
<syntaxhighlight 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?");
}
//...
}
</syntaxhighlight>
== Collegamenti esterni ==
[http://martinfowler.com/articles/injection.html Inversion of Control Containers and the Dependency Injection pattern] di [[Martin Fowler]] articolo in cui viene introdotto il pattern dell'inversione di controllo e la soluzione mediante container
{{Design pattern}}
[[Categoria:Pattern]]▼
{{Portale|informatica}}
▲<!-- Fumo, 11/04/2009 -->
|