单例模式
来源:互联网 发布:想开淘宝女装店 编辑:程序博客网 时间:2024/05/17 21:48
单例模式 :保证一个类仅用一个实例,并提供一个访问它的全局访问点。
这个类可以保护没有其他实例可以被创建,并且它可以提供一个访问方法该实例的方法。
-------饥汉模式
public class Singleton {
//自身定义了一个实例负责保存
private static Singleton instance;
//定义一个私有的构造方法,堵死了外界利用new创建此类的实例的可能
private Singleton(){}
//提供了一个访问它的全局访问点,要想实例化该类就必须调用该方法
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
-------饱汉模式
public class Singleton {
private Singleton(){};
// 实例化放在静态代码块里可以提高程序的执行效率,但是也可能更占内存
private final static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
------------------------
客户端调用代码:
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if(s1 == s2){
System.out.println("两个对象是相同的实例");
}else {
System.out.println("不同实例");
}
}
通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。
一个最好的方法就是,让类自身负责保存它的唯一实例,这个类可以保护没有其他实例可以被创建,并且它可以提供一个访问方法该实例的方法。
-------饥汉模式
public class Singleton {
//自身定义了一个实例负责保存
private static Singleton instance;
//定义一个私有的构造方法,堵死了外界利用new创建此类的实例的可能
private Singleton(){}
//提供了一个访问它的全局访问点,要想实例化该类就必须调用该方法
public static Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
-------饱汉模式
public class Singleton {
private Singleton(){};
// 实例化放在静态代码块里可以提高程序的执行效率,但是也可能更占内存
private final static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
------------------------
客户端调用代码:
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if(s1 == s2){
System.out.println("两个对象是相同的实例");
}else {
System.out.println("不同实例");
}
}
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- LeetCode题解:Insertion Sort List
- Android 应用开发 之使用LruCache和DiskLruCache来在内存和SD卡中缓存图片
- vim中copy或者delete的技巧
- LeetCode 之 Minimum Depth of Binary Tree
- 单例模式
- Find Median With Two heaps
- Ubuntu 下配置 Eclipse + Tomcat7 开发环境
- 在C语言环境下使用google protobuf
- 第二次接触Lua
- Cantor展开式
- jquery总结
- Django Meta小节(二) 之ModelForm
- Julia on CPU