Java设计模式之单例(件)模式

简介:
单件模式
   在开发的过程中,有些时候只需要一个对象,如缓存,对话框,注册表,数据库连接或线程池等对象,为了确保在整个应用程序中能够保证该对象是唯一的,引入了单件模式。
      单件模式,确保一个类只有一个实例,并提供一个全局访问点。
   单件模式的一般组成:
   1)定义一个该类的private static变量,确保是创建一次
   2)设置其无参构造器为private
   3)提供一个全局访问点,即public static  返回该类的实例化。
      这种常规的做法,在单线程中可以使用,但是对于多线程就有可能会使类有多个对象了。   3 “双重检查枷锁”,在getInstance中减少使用同步。首先检查是否创建了实例,如果尚未创建,才进行同步,在同步内再次检查是否创建。这种可以减少同步等待的时间。
   
package com.whut.singleton;

public  class SingletonObject {
  
   private  volatile  static SingletonObject singleObject;
   private SingletonObject(){}
  
   public  static     synchronized SingletonObject getInstance()
  {
     if(singleObject== null)
    {
       synchronized(SingletonObject. class)
      {
         if(singleObject== null)
        {
          singleObject= new SingletonObject();
        }
      }
    }
     return singleObject;
  }
}

  不能继承单件类,因为单件类的构造器是私有的,而继承后的子类均需要调用该构造器,可是该构造器是私有的,则就不能继承,一旦改了构造器访问域,则就会使单件类受到破坏。

本文转自 zhao_xiao_long 51CTO博客,原文链接:http://blog.51cto.com/computerdragon/1155669

相关文章
|
2天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
2天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
2天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
2天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
|
2天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
4天前
|
设计模式
设计模式(一)简单工厂模式
设计模式(一)简单工厂模式
13 0
|
8天前
|
设计模式 算法 Java
Java中的设计模式及其应用
【4月更文挑战第18天】本文介绍了Java设计模式的重要性及分类,包括创建型、结构型和行为型模式。创建型模式如单例、工厂方法用于对象创建;结构型模式如适配器、组合关注对象组合;行为型模式如策略、观察者关注对象交互。文中还举例说明了单例模式在配置管理器中的应用,工厂方法在图形编辑器中的使用,以及策略模式在电商折扣计算中的实践。设计模式能提升代码可读性、可维护性和可扩展性,是Java开发者的必备知识。
|
11天前
|
设计模式 算法 Java
小谈设计模式(30)—Java设计模式总结
小谈设计模式(30)—Java设计模式总结
|
12天前
|
设计模式 存储 Java
Java设计模式:解释一下单例模式(Singleton Pattern)。
`Singleton Pattern`是Java中的创建型设计模式,确保类只有一个实例并提供全局访问点。它通过私有化构造函数,用静态方法返回唯一的实例。类内静态变量存储此实例,对外仅通过静态方法访问。
16 1
ABAP和Java单例模式的攻防
ABAP和Java单例模式的攻防