ChenJLang

曾经有一份真挚的爱情 摆在我的面前 我没有珍惜 当我失去的时候 我才后悔莫及 人世间最悲伤的事情莫过于此 如果上天能让我再对那个女孩子说三个字 我爱你 如果非要让这次爱上面加个期限 我希望是一万年。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

单例模式的优缺点:

优点:1.提供了唯一的实例访问点

   2.由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。

   3.伸缩性:因为由类自己来控制实例化进程,类就在改变实例化进程上有相应的伸缩性

缺点:1.扩展性差,由于单例模式中没有抽象层,因此单例类的扩展有很大的困难。

   2.单例类的职责过重,在一定程度上违背了“单一职责原则”。

   3.滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。

 

    ----懒汉式
    private static Singleton singleton;
    
    private Singleton(){};
    
    public static synchronized Singleton getSingleton(){
        if(singleton==null){
            singleton = new Singleton();
        }
        return singleton;
    }


     ---- 饿汉式
    private static final Singleton singleton = new Singleton();
    
    private Singleton(){};
    
    public static Singleton getSingleton(){
        return singleton;
    }

 

   ---- 内部类式
    private static class Hanlder{
    private static Singleton sg= new Singleton();
    }
    
    private Singleton(){};
    
    public static Singleton getSig(){
        return Hanlder.sg;
    }

 

   ----双检索
    private Singleton(){};
    
    private volatile static Singleton sg ;
    
    public static Singleton getsg(){
        if(sg==null){
            synchronized (Singleton.class) {
                if(sg==null){
                    sg= new Singleton();
                }
            }
        }
        return sg;
    }

 

   ----枚举

 

 

posted on 2016-08-04 14:41  ChenJLang  阅读(291)  评论(0编辑  收藏  举报