美文网首页设计模式
创建型模式——1单例模式

创建型模式——1单例模式

作者: li_荔枝 | 来源:发表于2019-09-25 10:26 被阅读0次

声明:设计模式系列笔记摘自http://c.biancheng.net/view/1317.html

定义:一个类只有一个实例,且该类能自行创建这个实例。

image.png

特点:1.只能有一个实例;
2.该单例对象必须自行创建;
3.对外提供一个访问该单例的全局访问点。

应用场景特点:
1.某类只需要生成一个对象时;
2.对象需要被共享,由于单例模式只允许创建一个对象,共享该对象可以节省内存,并加快对象访问速度。如 Web 中的配置对象、数据库的连接池等。
3.当某类需要被频繁实例化并且频繁被销毁时,如线程池、网络连接池

例子一:
懒汉单例,该模式的特点是类加载时没有生成单例,只有当第一次调用 getlnstance 方法时才去创建这个单例。

public class LazySingleton {
    public static volatile LazySingleton instance = null; //保证 instance 在所有线程中同步
    private LazySingleton(){} //private 避免类在外部被实例化
    public static synchronized LazySingleton getInstance(){
        if(instance == null){
            instance = new LazySingleton();
        }
        return instance;
    }
}

当在另一个类中new LazySingleton 时,会发生编译错误The constructor LazySingleton() is not visible,因为LazySingleton 的构造函数是private私有的,因此不能new LazySingleton,只能通过getInstance方法来获取实例。

需要注意的是,如果编写的是多线程程序,则不要删除上例代码中的关键字 volatile 和 synchronized,否则将存在线程非安全的问题。如果不删除这两个关键字就能保证线程安全,但是每次访问时都要同步,会影响性能,且消耗更多的资源,这是懒汉式单例的缺点。

例子二:
饿汗单例,该模式的特点是类一旦加载就创建一个单例,保证在调用 getInstance 方法之前单例已经存在了。

public class HungarySingleton {
    private static final HungarySingleton instance = new HungarySingleton();
    private HungarySingleton(){}
    public HungarySingleton getInstance(){
        return instance;
    }
}

相关文章

  • 开发之设计模式-单例模式

    设计模式 设计模式分为三大类:创建型、结构型、行为型在Java中有24中设计模式 创建型:单例 1、为什么用单例模...

  • 【设计模式】创建型设计模式汇总

    创建型设计模式汇总 1. 单例模式 1.1 单例模式的定义 一个类只允许创建一个对象或实例。 1.2 单例模式的作...

  • 2.架构设计(单例模式设计)

    1.设计模式分为三个类 创建型 结构型 行为型 2.创建型:单例模式 为什么用单例模式?如果你看到这个问题,你怎么...

  • 设计模式简单总结(待完善)

    设计模式简单总结 设计模式可以分为:创建型,结构型,行为型三种模式。 1 创建型模式 1.1 单例模式 用来指定某...

  • 单例模式

    单例 单例模式,是一种设计模式,属于创建型设计模式,还有一种创建型设计模式,工厂模式。设计模式总共有23种,三大类...

  • iOS架构探究--单例模式

    设计模式分为三大类:创建型、结构性、行为型。单例模式就属于创建类。 1.为什么用单例模式? 由开发者的编程习惯...

  • 23种设计模式学习总结

    创建型设计模式 主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码合使用代码。 单例模式 单例模式用来...

  • Python 之单例模式

    简介:单例模式(Singleton Pattern) 是最简单的设计模式之一,属于创建型的设计模式。单例模式涉及到...

  • PHP常用设计模式

    # 创建型 单例模式 工厂模式 工厂抽象模式 原型模式 建造者模式 # 结构型 # 行为型 # 3.注册模式 # ...

  • 设计模式分类

    经典23种设计模式: 创建型设计模式: Singleton Pattern(单例模式) PrototypePatt...

网友评论

    本文标题:创建型模式——1单例模式

    本文链接:https://www.haomeiwen.com/subject/nupuyctx.html