Java基础知识总结(五)
来源:互联网 发布:迅雷5.8绿色优化版 编辑:程序博客网 时间:2024/06/06 02:26
Java单例模式
概念:
java中单例模式是一种常见的设计模式,单例模式分三种:懒汉模式单例、饿汉模式单例、登记模式的那里三种。
单例模式有一下特点:
1、单例类只能有一个实例。
2、单例类必须自己自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
1.饿汉式单例类
1 //饿汉式单例类.在类初始化时,已经自行实例化 2 public class Singleton1 { 3 //私有的默认构造子 4 private Singleton1() {} 5 //已经自行实例化 6 private static final Singleton1 single = new Singleton1(); 7 //静态工厂方法 8 public static Singleton1 getInstance() { 9 return single;10 }11 }
2.懒汉式单例类
1 //懒汉式单例类.在第一次调用的时候实例化 2 public class Singleton2 { 3 //私有的默认构造子 4 private Singleton2() {} 5 //注意,这里没有final 6 private static Singleton2 single=null; 7 //静态工厂方法 8 public synchronized static Singleton2 getInstance() { 9 if (single == null) { 10 single = new Singleton2();11 } 12 return single;13 }14 }
3.登记式单例类
1 import java.util.HashMap; 2 import java.util.Map; 3 //登记式单例类. 4 //类似Spring里面的方法,将类名注册,下次从里面直接获取。 5 public class Singleton3 { 6 private static Map<String,Singleton3> map = new HashMap<String,Singleton3>(); 7 static{ 8 Singleton3 single = new Singleton3(); 9 map.put(single.getClass().getName(), single);10 }11 //保护的默认构造子12 protected Singleton3(){}13 //静态工厂方法,返还此类惟一的实例14 public static Singleton3 getInstance(String name) {15 if(name == null) {16 name = Singleton3.class.getName();17 System.out.println("name == null"+"--->name="+name);18 }19 if(map.get(name) == null) {20 try {21 map.put(name, (Singleton3) Class.forName(name).newInstance());22 } catch (InstantiationException e) {23 e.printStackTrace();24 } catch (IllegalAccessException e) {25 e.printStackTrace();26 } catch (ClassNotFoundException e) {27 e.printStackTrace();28 }29 }30 return map.get(name);31 }32 //一个示意性的商业方法33 public String about() { 34 return "Hello, I am RegSingleton."; 35 } 36 public static void main(String[] args) {37 Singleton3 single3 = Singleton3.getInstance(null);38 System.out.println(single3.about());39 }40 }
0 0
- Java基础知识总结(五)
- Java基础知识总结(五)——安全
- Java基础知识(五)
- Java 基础知识(五 )
- Java基础知识(五)
- Java基础知识(五)
- java 基础知识五 数组
- Java基础知识(五)
- Java基础知识(五集合)
- java基础知识(五)
- java基础知识(五)
- 【JAVA】Java基础知识总结
- 【Java】Java基础知识总结
- Java多线程基础知识(五)
- JAVA基础知识整理(五)
- JAVA基础知识精华总结
- JAVA基础知识精华总结
- JAVA基础知识精华总结
- 多系统启动出现grub rescue模式,错误“normal.mod not found”解决办法
- iOS网络优化
- p12转pem
- 自定义报表
- 基站定位技术原理
- Java基础知识总结(五)
- Windows7中出现的KERNELBASE.dll错误的解决方法
- 面试准备(一)----什么是xxx
- Linux下php添加新扩展
- 深入理解:Android 编译系统
- linux中的正则表达式
- C语言指针学习六
- EditText电话号码格式
- 关系模式的规范化