Если только один класс использует ваш одноэлементный объект, то нет видимой разницы в количестве созданных объектов.
Предполагается, что вам нужен объект classASing с использованием подхода Singleton
ClassASing {
private static ClassASing obj = new ClassASing();
private ClassAsing(){...}
public static ClassASing getNewObject(){
return obj;
}
}
Использование Singletonподход
ClassB{
private ClassASing singObj = ClassASing.getNewObject();
}
- независимо от того, сколько экземпляров ClassB создано, все они будут использовать один и тот же объект ClassASing
с использованием статической ссылки
ClassB{
private static ClassA sObj = new ClassA();
}
* независимо от того, сколько экземпляров ClassB создано, все они будут использовать одну и ту же ссылку, указывающую на один и тот же объект.
Здесь нет большой разницы: 1 объект используется в обоих случаях.
Теперь, если вы рассмотрите еще один sencario, который вам нужен объект в двух ваших классах.
синглтонный подход
ClassB1{
private ClassASing singObj1 = ClassASing.getNewObject();
}
ClassB2{
private ClassASing singObj2 = ClassASing.getNewObject();
}
- независимо от того, сколько экземпляров ClassB1 создано, все они будутиспользовать один и тот же объект ClassASing
- независимо от того, сколько экземпляров ClassB2 создано, все они будут использовать один и тот же объект ClassASing-омв ClassB1 уже используется, поэтому только один объект ClassASing
Статический эталонный подход
ClassB1{
private static ClassA sObj1 = new ClassA();
}
ClassB2{
private static ClassA sObj2 = new ClassA();
}
- независимо от того, сколько созданных экземпляров ClassB1 будет создано, все они будут использоватьодна и та же ссылка sobj1, указывающая на один и тот же объект
- , независимо от того, сколько экземпляров созданного ClassB2 все они будут использовать одну и ту же ссылку sobj2, указывающую на один и тот же объект, но этот объект отличается от того, который создан в ClassB1, так что теперьу вас есть два объекта класса А.