Strategy pattern: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m a capo in eccesso |
m →Altri progetti: Aggiunto il parametro "Preposizione" nel template "Interprogetto" |
||
(13 versioni intermedie di 12 utenti non mostrate) | |||
Riga 1:
{{S|programmazione}}
Nella [[Programmazione orientata agli oggetti|programmazione ad oggetti]], lo '''strategy pattern''' è uno dei [[design pattern|pattern]] fondamentali, definiti originariamente dalla [[
Questo pattern prevede che gli algoritmi siano intercambiabili tra loro,
== Struttura ==
[[File:StrategyPattern.png|center|Struttura del Design Pattern Strategy]]
== Esempio ==
L'esempio seguente è stato codificato con il linguaggio di programmazione [[Java (linguaggio di programmazione)|Java]].
▲<source lang="java">
// "Strategy"
Line 65 ⟶ 62:
private List<Document> documentList = new List<Document>();
//Algoritmo per l'ordinamento dei documenti
private ISortStrategy
public SortedDocumentList( List<Document> documents ){
Line 71 ⟶ 68:
}
public void setSortStrategy(ISortStrategy
{
this.
}
public void
{
documentList.
}
Line 85 ⟶ 82:
{
//Ordina i documenti
// Display results
Line 97 ⟶ 94:
class Document
{
private
private
public Document(
{
this.title = title;
this.
}
public String getTitle()
Line 109 ⟶ 106:
return title;
}
public void
{
this.
}
}
</syntaxhighlight>
Utilizzo dello Strategy: nel seguente esempio vediamo come ordinare una lista di documenti con due diversi algoritmi di ordinamento senza che la classe che si occupa di ordinare i documenti conosca l'
<
public class SortDocument {
public void sort(List<Document> documents) {
QuickDocumentSort quickDocumentSort = new QuickdocumentSort();▼
▲ QuickDocumentSort quickDocumentSort = new QuickdocumentSort();
//Aggiungi l'algoritmo per effettuare l'ordinamento▼
▲ SortedDocumentList sortedDocumentList = new SortedDocumentList( documents );
▲ //Aggiungi l'algoritmo per effettuare l'ordinamento
sortedDocumentList.sort();▼
//Ordina i documenti usando l'algoritmo quickDocumentSort▼
▲ MergeDocumentSort mergeDocumentSort = new MergeDocumentSort ();
▲ sortedDocumentList.setSortStrategy(mergeDocumentSort);
sortedDocumentList.sort();
▲ sortedDocumentList.sort();
}
}
</syntaxhighlight>
== Considerazioni ==
{{...|informatica}}
== Bibliografia ==
Line 157 ⟶ 153:
== Altri progetti ==
{{interprogetto|
{{Design
{{portale|informatica}}
[[Categoria:
|