Android学习之设计模式之单例模式

Java据说有23种设计模式,Android的设计模式肯定是由Java来引申出来的。这里不讨论有多少人全会,有多少种设计模式会使用到,我们来讲下其中用得最多的也就是人人都知道的单例模式。

单例模式的实现也有很多种,最普通的(线程不安全),带上同步锁(效率有点低)等等。

今天来讲下一种比较奇特的据说是比较完美的实现方式,当然它也是能满足多线程并发的。

就是使用匿名内部类的方式来实现,代码如下:

/**
 * Person
 *
 * @author yuzhentao
 */
public class Person {

    private Context context;

    private static class PersonHolder {
        private static Person person = new Person();
    }

    private Person() {

    }

    public static Person getInstance() {
        return PersonHolder.person;
    }

    protected void test() {
        Toast.makeText(context, "测试", Toast.LENGTH_SHORT).show();
    }

    protected void init(Context context) {
        this.context = context;
    }

}
这里因为要使用到Context,所以要传入Context,关于Context的传入比较麻烦了点,需要外部先调用一下init()方法来传入,当然主要是我没想到比较好的方式,这还是借鉴了大神的想法。- -...

看看怎么使用的:

/**
 * 主界面
 *
 * @author yuzhentao
 */
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Person.getInstance().init(this);
        Person.getInstance().test();
    }

}
这就是我觉得比较好的单例模式的实现。

希望对大家有所帮助。

这里感谢:http://blog.csdn.net/beyond0525/article/details/22794221

Demo地址:http://download.csdn.net/detail/qq_23940659/9478450

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值