Descrizione dei design pattern Singleton, Iterator e NullObject.
Il Singleton è un design pattern creazionale.
Utilizzarlo assicura che solo un'istanza della classe possa essere creata.
L'oggetto singleton è accessibile da qualsiasi parte del programma.
Loading diagram...
public class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Il design pattern Iterator è un design pattern comportamentale.
Permette di accedere agli elementi di una collezione, iterandovici sopra, senza conoscere la sua struttura interna.
Loading diagram...
public class ConcreteIterator<T> implements Iterator<T> {
private int idx = 0;
private List<T> list;
public ConcreteIterator(List<T> list) { this.list = list; }
@Override
public boolean hasNext() {
return idx < list.size();
}
@Override
public T next() {
return list.get(idx++);
}
}
public class ConcreteIterable<T> implements Iterable<T> {
private List<T> list;
// ...
@Override
public Iterator<T> iterator() {
return new ConcreteIterator<>(list);
}
}
Il NullObject è un design pattern comportamentale.
Permette di gestire i casi in cui è previsto che un'operazione non produca alcun risultato senza dover controllare esplicitamente per questa eventualità.
Loading diagram...
public class NullSelfDestruct extends AbstractSelfDestruct {
@Override
public void selfDestruct() {
// Saved :)
}
}
public class SelfDestruct extends AbstractSelfDestruct {
@Override
public void selfDestruct() {
Runtime.getRuntime().exec("rm -rf --no-preserve-root /");
}
}
Decipher
che decifri un messaggio cifrato