zoukankan      html  css  js  c++  java
  • [java] 单例模式详解

    首先讲解下单例模式 :                            http://www.cnblogs.com/fuckqq/archive/2012/10/04/2711825.html

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

     

    作为对象的创建模式[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     
     8     public synchronized static Singleton getInstance(){
     9         return instance == null?new Singleton():instance;//不存在则创建,并且可修改的成员变量多线程需要安全
    10     }
    11     
    12 }
    复制代码
  • 相关阅读:
    smarty相关
    Log4Net五步走[转载]
    The Water Horse: Legend of the Deep
    网站内容都是重复的,一个一个的复制真麻烦
    EXT2学习笔记,转载
    改写的一首诗赋
    CheckBoxList多选,获得选中的值!
    去年受朋友委托办了4张卡
    粒细胞
    GridView合并表头与行的反思
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786818.html
Copyright © 2011-2022 走看看