Singleton Class: Klasa Singleton to klasa, z której może istnieć tylko jedna instancja dla programu ładującego klasy.
Klasa statyczna/pomocnicza (klasa z tylko statycznymi polami/metodami): Nie istnieje wystąpienie tej klasy. Tylko pola i metody mogą być bezpośrednio dostępne jako stałe lub metody pomocnicze.
Poniżej przedstawiono odniesienie z tego blog "Static classes in Java" opisuje to ładnie. Blog zawiera również przykłady dla wyjaśnienia sama:
Singleton przykład:
public class ClassicSingleton {
private static ClassicSingleton instance = null;
private ClassicSingleton() {
// Exists only to defeat instantiation.
}
public static ClassicSingleton getInstance() {
if (instance == null) {
instance = new ClassicSingleton();
}
return instance;
}
}
Static Class przykład:
/**
* A helper class with useful static utility functions.
*/
public final class ActionHelper {
/**
* private constructor to stop people instantiating it.
*/
private ActionHelper() {
// this is never run
}
/**
* prints hello world and then the users name
*
* @param users
* name
*/
public static void printHelloWorld(final String name) {
System.out.println("Hello World its " + name);
}
}
Więc jaka jest różnica między tymi dwoma przykładami i dlaczego ja pomyśl, że drugie rozwiązanie jest lepsze dla klasy, której nie chcesz lub potrzebujesz utworzyć. Po pierwsze wzór Singleton jest bardzo użyteczny, jeśli chcesz utworzyć jedną instancję klasy. Dla mojej klasy pomocników tak naprawdę nie chcemy tworzyć kopii każdej klasy. Powodem, dla którego nie powinieneś używać klasy Singleton, jest to, że dla tej klasy pomocnika nie używamy żadnych zmiennych. Klasa singleton byłaby przydatna, gdyby zawierała zestaw zmiennych, których potrzebowaliśmy tylko w jednym zestawie i metodach wykorzystujących te zmienne, ale w naszej klasie pomocniczej nie używamy żadnych zmiennych poza tymi, które zostały przekazane (które wykonujemy jako ostateczne) . Z tego powodu nie sądzę, że chcemy pojedynczej instancji, ponieważ nie chcemy żadnych zmiennych i nie chcemy, aby ktokolwiek natychmiastowywał tę klasę. Więc jeśli nie chcesz, aby ktokolwiek tworzył klasę, co jest normalnie, jeśli masz jakąś klasę pomocników/utilsów, to używam tego, co nazywam klasą statyczną, klasy z prywatnym konstruktorem i składa się tylko z metod statycznych bez żadnych dowolne zmienne.
sama odpowiedź jest również odwoływać od mojej odpowiedzi here
Brzmi jak duplikat http://stackoverflow.com/questions/519520/difference-between-static-class-and-singleton-pattern – oksayt
Nie zapomnij oznaczyć odpowiedzi jako zaakceptowanej, jeśli masz potrzebne informacje .. –
sprawdź http://stackoverflow.com/a/37114702/1406510 – nanosoft