定义
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例 。
单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需 要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让 类的实例去生成另一个唯一实例毫无意义。
其又分为三种形式
饿汉式
//只有内部类可以为static。
public class SingIn{
//在自己内部定义自己的一个实例,只供内部调用
private static final SingIn instance = new SingIn();
private SingIn(){
}
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static SingIn getInstance(){
return instance;
}
}
懒汉式
/***
* 一种常用的形式
*/
private static SingIn instance = null;
public static synchronized SingIn getInstance() {
// 这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
// 使用时生成实例,提高了效率!
if (instance == null)
instance = new SingIn();
return instance;
}
双重锁式
//将同步内容下方到if内部,提高了执行的效率,不必每次获取对象时都进行同步,只有第一次才同步,创建了以后就没必要了。
private static volatile SingIn instance=null;
private SingIn (){
}
public static SingIn getInstance(){
if(instance==null){
synchronized(SingIn .class){
if(instance==null){
instance=new SingIn ();
}
}
}
return instance;
}
使用方式,直接调用getInstance()方法即可得到对象。
优点
实例控制:Singln 会阻止其他对象实例化其自己的 Singln 对象的副本,从而确保所有对象都访问唯一实例
灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程
缺点
开销:虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销,可以通过使用静态初始化解决此问题。
可能的开发混淆:使用 Singln 对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用 new 关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。
对象的生存期:Singln 不能解决删除单个对象的问题。
分享到:
相关推荐
android 单例模式 干货 告诉你哪种单例模式最实用 最好用 不再迷茫
主要介绍了android设计模式中的单例模式详解,需要的朋友可以参考下
单例模式是软件设计模式中的一种基础模式,它的核心目标是确保一个类只有一个实例,并提供一个全局访问点。在Android开发中,单例模式常常被用来管理应用程序全局的状态,例如Application对象、图片加载框架或数据...
单例模式 一个类只有一个实例,并且可以全局访问使用 应用场景 如账户管理类,数据库操作类等(某个对象频繁被访问使用) 常用方式 饿汉式 懒汉式 同步加锁 DCL双重加锁验证 静态内部类 枚举单例 饿汉式 加载类的...
本文实例讲述了Android编程设计模式之单例模式。分享给大家供大家参考,具体如下: 一、介绍 单例模式是应用最广的模式之一,也可能是很多初级工程师唯一会使用的设计模式。在应用这个模式时,单例对象的类必须保证...
本人深圳安卓开发程序猿一枚,希望能一起...最近重温了一下java的设计模式,练练手,java设计模式有23种,写了12种常用的设计模式,一些觉得用不上就没写,水平有限,有问题欢迎留言一起加油email:674928145@qq.com!
详细讲解了组合模式、观察者模式、单例模式、模板方法模式、备忘录模式、享元模式、命令模式、工厂方法模式、适配器模式 原型模式等10个Android设计模式,和CSDN上其他讲Android设计模式的文章完全不同。讲解详细,...
Android 设计模式系列还包括工厂方法模式、抽象工厂模式、创建者模式、原型模式、单例模式、适配器模式、桥模式、组合模式、装饰模式、外观模式、享元模式、代理模式、解释器模式、模板方法模式、职责链模式、命令...
单例模式是一种常见的设计模式,确保一个类只有一个实例,并提供一个全局访问点。在Dagger2中,我们可以使用`@Singleton`注解来声明一个组件或模块为单例,但这里的“全局”并非在整个应用范围,而是限制在特定的...
### Android设计模式概述 #### 设计模式定义 设计模式是软件工程领域的一个重要概念,它代表着在特定场景下解决常见问题的有效方法。对于Android开发者而言,了解并掌握这些设计模式能够帮助他们编写更加高效、可...
接下来,单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在Android中,单例模式常用于网络请求、数据库操作、偏好设置等场景。实现单例通常有懒汉式(线程不安全)、饿汉式(线程安全)...
单例模式是软件设计模式中的一种经典模式,其主要目的是限制类的实例化次数,确保在任何情况下都只有一个实例存在。在Android系统中,单例模式的应用非常广泛,尤其是在需要全局访问点或管理共享资源的场景下。接...
"android设计模式"这一主题,主要涵盖了一些常见的设计原则、模式以及如何在Android环境中应用它们。《设计模式之禅》作为一本经典著作,其深入浅出的讲解方式使得读者能够轻松掌握设计模式的核心理念。 1. **设计...
Java的单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。在Android开发中,单例模式的应用尤其广泛,因为它能够有效管理资源,减少内存开销,提高性能。以下是对单例模式在Android中...
单例模式是软件设计模式的一种,其主要目的是确保一个类只有一个实例,并且提供一个全局访问点来获取这个实例。在Android系统中,单例模式被广泛应用于管理那些需要全局共享的资源,例如输入法管理者...
总的来说,《Android源码设计模式解析与实战》是一本深入浅出的Android设计模式教程,对于希望提升Android开发技能的工程师来说,是一份不可多得的学习资料。通过对书中的知识点进行深入学习和实践,开发者将能更好...
下面将详细探讨Android设计模式中的关键知识点。 1. 单例模式(Singleton):在Android中,单例模式用于确保一个类只有一个实例,并提供全局访问点。例如,Android系统的应用上下文(Context)就是通过单例模式管理的...