Strategy pattern: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
m Modifica dell'esempio dell'utilizzo del pattern strategy |
||
Riga 17:
{{...}}
L'esempio seguente è in [[Java (linguaggio_di_programmazione)|Java]].
<source lang="java">
// "Strategy"
public interface ISortStrategy
{
public void sort(List<Document> documentList);
}
// "classe concreta Strategy"
public class QuickDocumentSort implements ISortStrategy
{
public void sort(List<Document> documentList)
{
// Call overloaded Sort
sortQuickSort(documentList);
}
// Ordina usando l'algoritimo del quickSort
private void sortQuickSort(List<Document> list)
{
//Ordina i documenti usando l'algoritmo del quicksort
Collection.quickSort(list,left,right);
}
}
// "classe concreta Strategy"
public class MergDocumentSort implements ISortStrategy
{
public void sort(List<Document> documentList)
{
// Call overloaded Sort
sortMergeSort(documentList);
}
// Ordina usando l'algoritimo del quickSort
private void sortMergeSort(List<Document> list)
{
//Ordina i documenti usando l'algoritmo del quicksort
Collection.mergeSort(list,left,right);
}
}
//Contesto in cui viene usato il pattern strategy. Abbiamo una lista di documenti che deve essere ordinata.
public class SortedDocumentList
{
//Lista di documenti
private List<Document> documentList = new List<Document>();
//Algortimo per l'ordinamento dei documenti
private ISortStrategy sortstrategy;
public void setSortStrategy(ISortStrategy
{
}
Line 37 ⟶ 82:
}
//Ordina la lista di documenti usando un algortimo di ordinamento
public void sort()
{
sortstrategy.sort(documentList);
// Display results
{
}
}
}
class Document
{
Line 62 ⟶ 106:
this.codice = codice;
}
public
{
}
public
{
}
}
</source>
Utilizzo dello Strategy: nel seguente esempio vediamo come ordinare una lista di documenti con due diversi algortimi di ordinamento senza che la classe che si occupa di ordinare i documenti conosca l'implemetazione dell'algortimo di ordinamento.
<source lang="java">
public class SortDocument {
public void sort(List<Document> documents){
QuickDocumentSort quickDocumentSort = new QuickdocumentSort(documents);
SortedDocumentList sortedDocumentList = new SortedDocumentList();
//Aggiungi l'algoritimo per effetturare l'ordinamento
sortedDocumentList.setSortStrategy(quickDocumentSort);
//Ordina i documenti usando l'algortimo quickDocumentSort
sortedDocumentList.sort();
MergeDocumentSort mergeDocumentSort = new MergeDocumentSort (documents);
sortedDocumentList.setSortStrategy(mergeDocumentSort);
//Ordina di nuovo la lista usando un altro algortimo di ordinamento
sortedDocumentList.sort();
}
}
</source>
== Considerazioni ==
|