android控件单例,Android设计模式之单例模式的实现方式及说明

单例模式

概念,在核心结构中包含一个单例的特殊类,或者是说一个类只能被实例化一次

特点 1 只能有一个实例 。 2 必须自己创建自己的实例. 3单例类必须给其他对象提供这一实例

方式 1 饿汉 类加载时就完成了初始化 除非系统重启这个对象是不会改变的,线程安全

2 懒汉 类加载时不会初始化 在使用的时候才进行初始化

3 静态内部类的方式实现

饿汉式

饿汉式主要有两种种实现方式

第一种就是静态变量式初始化 静态方法获取

private static Singleton singleton = new Singleton();

public static Singleton getInstance(){

return singleton;

}

第二种是静态代码块的方式来实现

private static Singleton singleton;

static {

//静态代码块的方式实现

singleton = new Singleton();

}

public static Singleton getInstance(){

return singleton;

}

以上两种实现方式均为饿汉式,在类加载式就完成了初始化工作,本身就是线程安全的

懒汉式

懒汉式是在用到时候才会初始化,在多线程中并不是线程安全,可能会被创建多个实例,这与单例的宗旨目的相违背,所以为了达到线程安全的目的采用synchronized同步锁的方式来达到线程安全的目的

private static Singleton singleton = null;

public static Singleton getInstacn(){

if(singleton==null){

synchronized (Singleton.class){

if(singleton==null){ //双重判空是为了 判断是否有线程已经执行过

singleton = new Singleton();

}

}

}

return singleton;

}

静态内部类的式

//静态内部类 在主动使用的时候才会加载

private static class InnerSingleton{

static Singleton singleton = new Singleton();

}

public static Singleton getInstance(){

return InnerSingleton.singleton;

}

以上就是单例的主要实现方式,具体是用哪种根据业务情况自己判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值