首页 / 设计模式 / 关于单例设计模式的细究
关于单例设计模式的细究
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于单例设计模式的细究,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1388字,纯文字阅读大概需要2分钟。
内容图文
在日常的项目开发中,常常会遇到一个类有且只有一个实例的情况,这就是典型的单例模式。
关于单例模式的设计有三种思路:
思路一:
1.构造方法私有;
2.声明全局的私有的静态的类的对象为null;
3.提供公有的静态的getInstance方法,判断对象是否为空,若为空,则创建对象,否则,直接返回对象;
public class Singleton{
private Singleton(){}
private static Singleton singletonObject ;
public static synchronized Singleton getInstance(){
return singletonObject = singletonObject == null?new Singleton():singletonObject ;
}
}
优点:类加载的时候不会加载实例对象,延迟加载,类加载速度快;
缺点:但线程需要等待,前一个线程锁释放后下一个才能操作,如果高并发且对性能要求高的, 这种设计效果可能不理想。
思路二:
1.构造方法私有
2.直接实例化全局的私有的静态的类的对象
3.提供公有的静态的getInstance方法,只有调用此方法即返回实例对象
public class Singleton{
private Singleton(){}
private static Singleton singletonObject = new Singleton();
public static Singleton getInstance(){
return singletonObject ;
}
}
优点:类加载的时候实例对象,获取对象速度快。线程安全,避免了多线程的同步问题,不用加线程锁;
缺点:不具备延迟加载,类加载速度慢。此外,如果在类中还有其他静态方法或属性,调用时也会实例化对象,而这不是我们期待的
思路三:
1.构造方法私有
2.声明全局的私有的静态的类的对象为null
3.提供静态的内部类,在内部类中声明类的实例对象
4.提供公有的静态的getInstance方法,调用内部类的已实例化的对象
public class Singleton{
private Singleton(){}
private static Singleton singletonObject;
public static class SingletonHelper{
private static final Singleton INSTANCE= new Singleton ();
}
public static Singleton getInstance(){
singletonObject = SingletonHelper.INSTANCE
return singletonObject ;
}
}
优点:既达到了延迟加载的效果也线程安全,同时避免了线程同步降低性能的问题
缺点:无
备注:调用类的构造方法或静态成员时会classloader,在单例模式中,构造器已经私有,只有调用静态方法或属性才会classloader
原文:http://www.cnblogs.com/singletonModel/p/7467374.html
内容总结
以上是互联网集市为您收集整理的关于单例设计模式的细究全部内容,希望文章能够帮你解决关于单例设计模式的细究所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。