Singleton:
Take certain methods to ensure that the entire software system, for a class there is only an object instance
Ways: lazy style and Chinese style, and so hungry
Lazy style and starving type of difference:
Cons Pros
Starving type: thread-safe load for too long in memory
Lazy type: thread safe extended to create an object
class Order {
private String name;
//私有化构造函数
private Order() {
}
private static Order instance = null;
public static Order getInstance() {
if (instance == null) {
instance = new Order();
}
return instance;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Single002 {
public static void main(String[] args) {
Order o1=Order.getInstance();
Order o2=Order.getInstance();
System.out.println(o1==o2);
System.out.println("################");
o1.setName("lisi");
System.out.println(o2.getName());
}
}
饿汉式
Bank {class
public String getName () {
return name;
}
public void the setName (String name) {
this.name = name;
}
Private String name;
// constructor privatization
Private Bank () {
}
// create static internal objects
= new new instance static Bank Private Bank ();
// public static method returns a class object
public static Bank the getInstance () {
return instance;
}
}
public class Single001 {
public static void main (String [] args) {
Bank B = Bank.getInstance ();
Bank Bank.getInstance B1 = ();
System.out.println (B == B1);
System.out.println("*****************");
b.setName("zhangsan");
System.out.println(b1.getName());
}
}
------------ ------------ restore content begins
Singleton:
Take certain methods to ensure that the entire software system, for a class there is only an object instance
Ways: lazy style and Chinese style, and so hungry
Lazy style
class Order {
private String name;
//私有化构造函数
private Order() {
}
private static Order instance = null;
public static Order getInstance() {
if (instance == null) {
instance = new Order();
}
return instance;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Single002 {
public static void main(String[] args) {
Order o1=Order.getInstance();
Order o2=Order.getInstance();
System.out.println(o1==o2);
System.out.println("################");
o1.setName("lisi");
System.out.println(o2.getName());
}
}
饿汉式
Bank {class
public String getName () {
return name;
}
public void the setName (String name) {
this.name = name;
}
Private String name;
// constructor privatization
Private Bank () {
}
// create static internal objects
= new new instance static Bank Private Bank ();
// public static method returns a class object
public static Bank the getInstance () {
return instance;
}
}
public class Single001 {
public static void main (String [] args) {
Bank B = Bank.getInstance ();
Bank Bank.getInstance B1 = ();
System.out.println (B == B1);
System.out.println("*****************");
b.setName("zhangsan");
System.out.println(b1.getName());
}
}
End ------------ ------------ restore content