duminică, 10 mai 2009

Singleton - design pattern

Conceptul se numeste singleton. Reprezinta o tehnica prin care se limiteaza numarul de instante ale unei clase la una singura. Cu alte cuvinte nu pot construi decat un singur obiect din aceasta clasa.

O clasa care implementeaza conceptul de singleton arata in felul urmator:

public class Singleton {
  private final static Singleton INSTANCE = new Singleton();

  // constructorul este privat si nu permite crearea unei noi
instante
  private Singleton() {}

  // nu este obligatoriu numele getIntstance(), insa acesta se
foloseste de obieci
  public static Singleton getInstance() {
    return INSTANCE;
  }
}

Un obiect de tip Calendar se contruieste prin urmatorul apel:

        Calendar c = Calendar.getInstance();

nu printr-un apel clasic de genul:

         Calendar c = new Calendar();

Ideea de baza este ca programul nu are nevoie de mai multe obiecte de tip Calendar. Poate avea nevoie de mai multe obiecte de tip Date (de exemplu pentru a retine atat data de acum si cea de peste 5 zile), insa este suficient un sigur obiect Calendar care sa intoarca data actuala a sistemului.

Chiar daca vom face o bucata de cod de genul:

        Calendar c1 = Calendar.getInstance();
   Calendar c2 = Calendar.getInstance();
   Calendar c3 = Calendar.getInstance();

toate vor pointa catre un sigur obiect, si anume atributul static final din clasa pe care am implementat singletonul (in cazul nostru Calendar).

Tehnica de singleton se foloseste in special pentru a reduce consumul de memorie si pentru a centraliza anumite operatii catre un singur obiect.

Niciun comentariu:

Trimiteți un comentariu