getInstance vs new

0

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???

1

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

0

Pierwszy przypadek używany jest kiedy klasa jest np. Singletonem gdzie konstruktor jest prywatny. Drugi przypadek po prostu tworzy kolejną instancję klasy.

0

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?

0

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

1

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1