厦门网站制作案例,惠州网站小程序建设,成品网站源码的优化技巧,ps自学网官方网站单例模式概念
单例模式确保某一个类只有一个实例#xff0c;而且自行实例化并向整个系统提供这个实例。单例模式只应在有真正的“单一实例”的需求时才可使用。总结起来单例模式有三个优点#xff1a;
全局访问共享资源#xff1a;当需要在应用程序的多个地方共享和使用相…单例模式概念
单例模式确保某一个类只有一个实例而且自行实例化并向整个系统提供这个实例。单例模式只应在有真正的“单一实例”的需求时才可使用。总结起来单例模式有三个优点
全局访问共享资源当需要在应用程序的多个地方共享和使用相同的资源时单例模式可以确保所有使用该资源的组件都访问相同的实例。这样可以防止资源冲突和数据不一致。减小内存开支特别是一个对象需要频繁的创建、销毁时而且创建或销毁时性能无法优化单例模式的优势就非常明显。减少性能开销由于单例模式生成一个实例所以减少了系统性能的开销当一个对象的产生需要比较多的资源时如读取配置、产生其他依赖对象时则可以通过在应用启动时直接生产一个单例对象然后用永远驻留内存的方式来解决
单例模式类关系图
、
单例模式代码实现
代码和注释实现如下其他类只能通过SingletonPattern.getInstance方法获取实例
public class SingletonPattern { / /自身完成了实例化实例对象通过getInstance方法获取 private static final SingletonPattern singletonPattern new SingletonPattern(); // 限制住其他类不能直接产生一个SingletonPattern的实例 private SingletonPattern(){ } //加synchronized目的是确保在并发情况下出现多个实例的情况 public synchronized static SingletonPattern getInstance(){ return singletonPattern; } }
测试代码实现如下
public class TestSingleton { public static void main(String[] args) { Object obj SingletonPattern.getInstance(); //获取obj对象的类信息 Class? clazz obj.getClass(); System.out.println(clazz); Object s1SingletonPattern.getInstance(); Object s2SingletonPattern.getInstance(); //比较的是对象的引用是否相等而equals比较的是对象的值是否相等。 System.out.println(s1s2); }
} 输出
class com.my.singleton.SingletonPattern true
从输出结果可以看出实例clazz的类型是SingletonPattern而s1和s2的引用相同证明是单例
如果想下载源码可以下载
https://download.csdn.net/download/liwenxiang629/88628902
一句话总结模板方法 单例模式就是一个类只提供一个实例不能new多个实例
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题如果文章帮到了您劳烦点赞、收藏、转发您的鼓励是我不断更新文章最大的动力