科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件java单例模式详解

java单例模式详解

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

java单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

来源:中国IT实验室 2013年3月3日

关键字: java

  • 评论
  • 分享微博
  • 分享邮件

ZDNet至顶网软件频道 首先讲解下单例模式:

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

显然单例模式的要点有三个:

一是某个类只能有一个实例

二是它必须自行创建这个实例

三是它必须自行向整个系统提供这个实例(其实这里个人认为不不是完全正确,但是在ssh中使用的时候,是没有我就new一个,所以在整个系统中不止一个对象,但是绝对不会同时出现两个或以上对象、实例)

单例模式的应用场景:

①、一些资源管理常常设计成单例模式:比如读取配置文件时候使用单例,应当由一个对象来管理一个属性文件

②、可以使用单例实现缓存机制:把多次生成的文件、对象等资源放在单例的成员变量中,相同条件下,从单例的成员变量中获取(这里的成员变量可以是集合、map等容器)

优点:节约内存(只有一个实例)

缺点:打破了java的设计原则,即多态,因为单例不能被外部new了,所以单例的构造方法时private的,也就不能被继承了,最终打破了多带原则

最后是代码实现

饿汉式:

1 /**

2 * 饿汉式就是很饥饿的意思,上来就创建

3 */

4 public class Singleton {

5 private static Singleton instance = new Singleton();

6

7 public static Singleton getInstance(){

8 return instance;

9 }

10

11 }

懒汉式:

1 /**

2 * 懒汉式就是很懒,用的时候才去创建

3 *

4 */

5 public class Singleton{

6 private static Singleton instance ;

7 public synchronized static Singleton getInstance(){

8 return instance == null?new Singleton():instance;//不存在则创建,并且可修改的成员变量多线程需要安全

9 }

10 }

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章