单例模式

单例模式的优缺点:

优点: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 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/ChenLLang/p/5736648.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值