Obezbeđivanje da klasa ima jedan primerak i da nije moguće slučajno ili namerno napraviti druge objekte te klase.
class PrintManager{
public static PrintManager Instance() {
if (instance==null) instance=new PrintManager;
return instance;
}
protected PrintManager() {...}
private static PrintManager instance=null;
}
Jedna od važnih aktivnosti objektno-orijentisanih sistema je mogućnost kreiranja novih objekata.
Uglavnom se sistem za kreiranje novih objekata zasniva na instanciranju. U mnogim objektno-orijentisanim sistemima ponekad je neophodno ograničiti ili proširiti mogućnosti i način na koji se kreiraju novi objekti. Na primer, u pojedinim situacijama je bitno da u sistemu postoji samo jedan objekat koji je instanca neke određene klase. Takav je primer sistema u kome može biti nekoliko štampača, ali je nužno da postoji jedan i samo jedan objekat koji upravlja štampanjem, jer postojanje dva objekta za upravljanje štampanjem moglo bi rezultovati mešanjem ispisa na štampaču zbog dva različita zahteva za štampanje.
Ideja 1:
Programer kreira objekat samo na jednom mestu. Pokazivač na ovaj objekat bio bi smešten u nekoj javnoj promenljivoj, tako da svi objekti mogu da mu pristupe po potrebi.Mane ideje 1:
Ne sprečava se da drugi delovi programa kreiraju svoje verzije ovog objekta (naročito ako se radi o relativno dužim programima čiji autor nije samo jedan programer) .Ideja 2
Kreirati klasu koja ima zaduženja :kreiranje i pristup jedinstvenom objektu.
class Singleton{
private Singleton _instance = null;
protected Singleton() {
...
}
public static Singleton instance() {
if(this._instance == null) {
this._instance = new Singleton(); }
return this._instance; }
}
Session class, WidggetKit class (u kompletu alata korisničkog interfejsa InterView)
Neki DP mogu da se implementiraju pattern-om Singleton.
Singleton DP može da sarađuje sa Observer DP-om u situaciji kada
odnosi zavisnosti između subjekata i observera (videti Observer DP )
zbog svoje složenosti, zahtevaju postojanje nekog objekta ChangeManager-a.
Na primer, može da se dogodi da neka operacija obuhvata izmene nad
više međusobno zavisnih subjekata. Tada je potrebno obavestiti observer-e
tek nakon izmene svih subjekata, kao preventiva od pojave višestrukog obaveštavanja.
Stoga bi Change Manger bio zadužen da:
← Mesto DP-a pri projektovanju | Uvod | Visitor DP → |