java设计模式之单例模式

  • 单例模式概念:保证类存中只有一个对象
  • 如何保证类在内存中只有一个对象呢?
  • A:把构造方法私有
  • B:在成员位置自己创建一个对象
  • C:通过一个公共的方法提供访问
  • 单例模式分为:
  •   饿汉式:类一加载就创建对象
    
  •   懒汉式:用的时候,才去创建对象
    
  • 面试题:单例模式的思想是什么?请写一个代码体现
  • 开发:饿汉式(是不会出问题的单例模式)
  • 面试:懒汉式(可能会出现问题的单例模式)
  •     A:懒加载(延迟加载)
    
  •     B:线程安全问题:
    
  •        a:是否多线程环境 是
    
  •        b:是否有共享数据 是
    
  •        c:是否有多条一句操作共享数据 是 
    

1.饿汉式代码
public class StudentDemo {
public static void main(String[] args) {
Student t1=Student.getTeacher();
Student t2=Student.getTeacher();
System.out.println(t1==t2);
System.out.println(t1);
System.out.println(t2);
}
}
class Student{
//构造私有
private Student() {}
//静态方法只能访问静态变量
static Student s=new Student();
//为了保证外界能够直接使用该方法,加静态
public static Student getTeacher()
{
return s;
}
}

2.懒汉式代码
public class StudentDemo {
public static void main(String[] args) {
Teacher t1=Teacher.getTeacher();
Teacher t2=Teacher.getTeacher();
System.out.println(t1t2);
System.out.println(t1);
System.out.println(t2);
}
}
class Teacher{
private Teacher() {}
private static Teacher t=null;
public synchronized static Teacher getTeacher() {
if(t
null) {
t=new Teacher();
}
return t;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值