public class Fib { // classe che implementa un Singleton
private static Fib obj = new Fib(); // istanza di Fib
private int[] x = {1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233};
private int i;
private Fib() { // costruttore privato
i = 3;
}
public static Fib getInstance() { // metodo della classe
return obj; // restituisce l'unica istanza
}
public int getValue() {
if (i<11) i++;
return x[i-1];
}
public void revert() {
i = 0;
}
}
public class TestFib {
public static void main(String[] args) {
// richiede una istanza di Fib
Fib f = Fib.getInstance();
System.out.print("f "+f.getValue());
System.out.println(" "+f.getValue());
// richiede una nuova istanza
Fib f2 = Fib.getInstance();
System.out.print("f2 "+f2.getValue());
System.out.println(" "+f2.getValue());
// Si ha un errore a compile-time con:
// Fib f3 = (Fib) f2.clone();
// Fib f4 = new Fib();
}
}