单例模式(未完成)

一)故事

二)定义
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

三)代码例子
共计两个类组成:1)普通类;2)单例类;
1)普通类
/**
 *  普通类
 * 
 * @author levovo
 */
public class A {
    public A() {
        System.out.println("A()->A()");
    }
    public void method1() {
        System.out.println("A()->method2()");
    }
    public void method2() {
        System.out.println("A()->method2()");
    }
}

2)单例类
单例模式(通过synchronized实现单例)
/**
 *  单例模式(通过synchronized实现单例)
 *  
 * @author levovo
 *
 */
public class ASingle {
    // 单例模式对象
    private static A mInstance = null;
    // 要加这个,修饰为private
    private ASingle() {
        
    }
    /**
     * 得到单例实例
     *
     * @return
     */
    public synchronized static A getInstance() {
        if (mInstance == null) {
            mInstance = new A();
        }
        return mInstance;
    }
}

单例模式(通过Object对象锁实现单例)
/**
 *  单例模式(通过Object对象锁实现单例)
 *
 * @author levovo
 *
 */
public class BSingle {
    // 对象锁
    private static Object mObject = new Object();
    // 单例模式对象
    private static A mInstance = null;
    // 要加这个,修饰为private
    private BSingle() {
        
    }
    /**
     * 单例模式
     *
     * @return
     */
    public static A getInstance() {
        synchronized (mObject) {
            if (mInstance == null) {
                mInstance = new A();
            }
        }
        return mInstance;
    }
}

场景使用例子
/**
 *  场景使用例子
 *
 * @author levovo
 */
public class Client {
    public static void main(String[] args) {
        // 单例模式(通过synchronized实现单例)
        ASingle.getInstance().method1();
        ASingle.getInstance().method2();
        // 单例模式(通过Object对象锁实现单例)
        BSingle.getInstance().method1();
        BSingle.getInstance().method2();
    }
}

四)优点(未完成)
1)由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁地创建,销毁时,而且创建或销毁时性能又无法优化,单例模式的优势就非常明显了。
2)由于单例模式只生成一个实例,所以减少了系统的性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后用永久驻留内存的方式来解决。
3)
4)

五)缺点(未完成)
1)
2)
3)

六)使用场景(未完成)
1)
2)
3)
4)

七)注意事项

八)扩展(未完成)
多例模式

九)总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值