单例设计模式:保证一个类仅有一个实列,并提供一个访问他的全局访问点,
1.构造方法私有化
2.声明一个本类对象
3.给外部提供一个静态方法获取对象实列
两种实现方法:
1.饿汉式
2.懒汉式
标题单列有什么好处?
1.在设计一些工具类的时候,(通常工具类,只有功能方法,没有属性)
2.工具类可能会被频繁调用
3.目的是为了节省重复创建的内存消耗,提高内存的效率
// 使用构造方法私有化,也可以模拟,比如Manth 等等。 静态方法等。但是比较占内存大
package com.company;
//1.构造方法私有化
//2.声明一个本类对象
//3.给外部提供一个静态方法获取对象实列
//
//## 两种实现方法:
//
//1.饿汉式 在类被加载后类被创建,在程序结束后释放
//2.懒汉式 在第一次调用getinstance 方法式,队形被创建,到程序结束释放
//两种方法不一样
public class danli {
public static void main(String[] args){
Singletonl s=Singletonl.getInstance();
s.print();
Singletonl s2=Singletonl.getInstance();
s2.print();
System.out.println(s==s2);
}
}
//饿汉式 占用内存的时间长
class Singletonl{
private Singletonl(){ };
private static Singletonl s=new Singletonl();
public static Singletonl getInstance(){
return s;
};
public void print(){
System.out.println("测试方法");
}
}
//懒汉式 占用内存的时间短 效率低 建议(懒加载,延迟加载)
//懒汉式还有升级版本 ,在多线程访问时,有安全问题
class Singletonl2{
private Singletonl2(){};
private static Singletonl2 s;
public static Singletonl2 getInstance(){
if(s==null){
s=new Singletonl2();
}
return s;
}
public void print(){
System.out.println("这是懒汉式");
}
}