设计模式---单例模式
来源:互联网 发布:生物竞赛题库软件 编辑:程序博客网 时间:2024/06/05 10:06
# 单例模式
#单例模式-->从始至终 只产生一个示例
#代码
public class Single {private static Single instance;
private Single(){
}
public Single getInstance(){
if(instance!=null){
instance = new Single();
}
return instance;
}
}
# Static 修饰变量表示是静态变量
被 static修饰 表示是静态变量 没有表示是实例变量 二者的区别 在于 静态变量 在 加载类的时候就会分配内存 可以用类名直接访问 实例变量 会在类实例化的时候 进行内存分配 会在内存中有多个备份 互不影响 静态变量 只会在内存中有一个
实例变量 只有在用的时候 才会实例化 但是静态变量 只要加载类 就会实例化 但是只会有一个
要点 1 。 静态全局变量 instance
2. 构造方法 私有化 private 这样 非子类都不能访问
3. public 的getInstance方法 来实例化对象
# 如果多个线程 同时访问 有可能实例化多个对象出来
比如 线程一 运行到 if判断的时候 sleep一秒钟 线程二 运行过来if 这是 实例已经被创建了 但是 线程一 仍然 任务 instance 是null 于是又创建了新 的一个
#解决办法 使用 synchronize 同步代码块 当 线程一 运行该部分代码时 线程二 会等待他 运行结束 在运行 该部分代码
**************************完美解决方式*********************************
*/
/**
* 使用静态内部类来实现 静态内部类只能访问外部类的静态成员 静态内部类不能new
* @author arthas
*
*/
public class Single {
//1 一个私有的构造方法 保证 获取该实例的时候 不会通过此方法
private Single() {
}
// 2 一个公共的静态内部类 里面只有一个静态的最终类 实例对象 instance
public static class Singleton1{
private static final Single instance = new Single();
}
//一个公共的构造方法 得到instance实例 静态变量可以通过 类名点点的方式直接获取
public static Single getInstance(){
return Singleton1.instance;
}
}
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 设计模式-单例模式
- [设计模式] 单例模式
- 设计模式--单例模式
- 设计模式---单例模式
- 设计模式--单例模式
- 设计模式 -----单例模式
- 设计模式:单例模式
- ListViewDemo
- xiala
- centos配置虚拟主机多网站
- 取模运算和求余运算的区别
- 欢迎使用CSDN-markdown编辑器
- 设计模式---单例模式
- github删除项目(repository)
- UILIB 加载XML
- Fedora中搜狗输入法常见问题
- Git详解之三 Git分支
- POJ_3278_ Catch That Cow _广搜
- TRIM:提升磁盘性能,缓解Android卡顿
- eclipse: workspace出错导致无法启用的解决
- 大整数(可怕的阶乘)