单例设计模式的饿汉式和懒汉式

单例模式:

    采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例

               实现方式:懒汉式 和饿汉式等等   

懒汉式和饿汉式的区别:

          缺点            优点

    饿汉式:在内存中加载的时间过长             线程安全

    懒汉式 :   线程不安全        延长对象的创建        

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());
}
}
饿汉式
class Bank {
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

private String name;

// 私有化构造器
private Bank() {

}

// 创建静态内部对象
private static Bank instance = new Bank();

//提供公共静态方法,返回类对象
public static Bank getInstance() {
return instance;
}
}

public class Single001 {
public static void main(String[] args) {
Bank b=Bank.getInstance();
Bank b1=Bank.getInstance();
System.out.println(b==b1);
System.out.println("*****************");
b.setName("zhangsan");
System.out.println(b1.getName());
}
}

------------恢复内容开始------------

单例模式:

    采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例

               实现方式:懒汉式 和饿汉式等等   

懒汉式     

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());
}
}
饿汉式
class Bank {
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

private String name;

// 私有化构造器
private Bank() {

}

// 创建静态内部对象
private static Bank instance = new Bank();

//提供公共静态方法,返回类对象
public static Bank getInstance() {
return instance;
}
}

public class Single001 {
public static void main(String[] args) {
Bank b=Bank.getInstance();
Bank b1=Bank.getInstance();
System.out.println(b==b1);
System.out.println("*****************");
b.setName("zhangsan");
System.out.println(b1.getName());
}
}

------------恢复内容结束------------

猜你喜欢

转载自www.cnblogs.com/kukai/p/12524772.html