siemka!
Czym roznia sie te dwie instrukcjie.
A a = A.getInstance();
A a = new A();
i co ma zwracac statyczny getInstance. this(ten obiekt) nie moze byc(statyczna), null mi wchodzi tylko dlaczego???
siemka!
Czym roznia sie te dwie instrukcjie.
A a = A.getInstance();
A a = new A();
i co ma zwracac statyczny getInstance. this(ten obiekt) nie moze byc(statyczna), null mi wchodzi tylko dlaczego???
A to prawdopobnje singleton, więc nie ważne gdzie zawołasz getInstance
, zawsze odnościć będzie siè to do jednej i tej samej instancji
Pierwszy przypadek używany jest kiedy klasa jest np. Singletonem gdzie konstruktor jest prywatny. Drugi przypadek po prostu tworzy kolejną instancję klasy.
Czyli np jak w obiekcie jest lista do ktorej bedziemy dodawać rzeczy bedzie to getInstance(nie chcemy powstawania nowych obiektow). Czy to nie jest podobne do static?
Singleton (wzorzec, antywzorzec projektowy) jest ** zbliżony** do klasy statycznej, opis różnic znajdziesz:
http://www.dotnetperls.com/singleton-static
http://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern
Założenie, że getInstance
zwraca singleton jest tylko w połowie OK. Może ona mieć znaczenie metody fabrykującej, która tworzy bardziej skomplikowane obiekty np:
public static final MyClass getInstance(){
MyClass my = new MyClass();
my.setService(ServiceLocator.find("service"));
BUSmanager.registerObserver(my);
return my;
}
W tym przypadku za każdym razem dostaniesz nową instancję, ale proces jej tworzenia został zamknięty w metodzie ze względu na poziom skomplikowania - dodatkowe kroki, które muszą zostać wykonane już po utworzeniu obiektu.