源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java单例模式使用及注意事项

  • 时间:2021-12-08 13:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java单例模式使用及注意事项
1. 说明 1)单例模式:确保一个类只有一个实例,自行实例化并向系统提供这个实例 2)单例模式分类:饿单例模式(类加载时实例化一个对象给自己的引用),懒单例模式(调用取得实例的方法如getInstance时才会实例化对象)(java中饿单例模式性能优于懒单例模式,c++中一般使用懒单例模式) 3)单例模式要素: a)私有构造方法 b)私有静态引用指向自己实例 c)以自己实例为返回值的公有静态方法  2.实例 饿单例模式:
[u]复制代码[/u] 代码如下:
package com.wish.modedesign; public class HungrySingleton {     private static HungrySingleton instance  = new HungrySingleton();     private HungrySingleton(){     }     public static HungrySingleton getInstance(){         return instance;     } }
懒单例模式:
[u]复制代码[/u] 代码如下:
package com.wish.modedesign; public class Singleton {     private Singleton(){     }     private static Singleton instance;     public static synchronized Singleton getInstance(){   //多线程时注意线程安全         if(instance == null){             instance = new Singleton();         }         return instance;     } }
测试类Driver.java
[u]复制代码[/u] 代码如下:
package com.wish.modedesign; public class Driver {     public static void main(String[] args) {         Singleton s1 = Singleton.getInstance();         Singleton s2 = Singleton.getInstance();         System.out.println(s1==s2);   //true     } }
3.优点和适用场景 1)单例模式的优点: 在内存中只有一个对象,节省内存空间。 避免频繁的创建销毁对象,可以提高性能。 避免对共享资源的多重占用。 可以全局访问。 2)适用场景: 需要频繁实例化然后销毁的对象。 创建对象时耗时过多或者耗资源过多,但又经常用到的对象。 有状态的工具类对象。 频繁访问数据库或文件的对象。 4.使用时注意事项 1)使用时不能用反射模式创建单例,否则会实例化一个新的对象 2)使用懒单例模式时注意线程安全问题 3)饿单例模式和懒单例模式构造方法都是私有的,因而是不能被继承的,有些单例模式可以被继承(如登记式模式)
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部