首页 > 其他分享 >设计模式——单例设计模式

设计模式——单例设计模式

时间:2024-08-10 14:52:01浏览次数:13  
标签:单例 getInstance student static Student 设计模式 public

单例设计模式

如果你想创建一个类而且它在任何时刻只会有一个对象,那么你就应该使用单例类模式。

此模式保证某个类在运行期间,只有一个实例对外提供服务,而这个类被称为单例类。

懒汉式:

只有调用getInstance方法时 才创建对象.使用synchronized同步锁来保证防止多个线程同时调用,保证线程安全

问题:由于加锁原因使方法的并发量很低,每次并发1个,而这个方法在单例使用期间,一直会被调用。如果频繁地用到,那频繁加锁、释放锁及并发度低等问题,会导致性能下降

/*
懒汉式
 */
public class Student {
    //创建static修饰的成员变量
    private static Student student;

    //设计私有构造方法
    public Student() {
        super();
    }

    //提供共有的方法
    public static synchronized Student getInstance(){
        if(student==null) {
            student= new Student();
        }
        return student;
    }
}
饿汉式:

在类加载期间就初始化静态实例对象,保证创建的getInstance实例的是线程安全的 

​ 特点: 不支持延迟加载实例(懒加载) , 此中方式类加载比较慢,但是获取实例对象比较快

​ 问题: 该对象足够大的话,而一直没有使用就会造成内存的浪费。

/*
饿汉式
 */
public class Student {
    //创建static修饰的成员变量
    private static Student stu=new Student();
    //设计私有构造方法
    public Student() {
        super();
    }
    //提供共有的方法
    public static synchronized Student getInstance(){
        return stu;
    }
}

标签:单例,getInstance,student,static,Student,设计模式,public
From: https://blog.csdn.net/Z_DOUBLE_Y/article/details/141090307

相关文章

  • Java设计模式:中介者模式详解与最佳实践
    Java设计模式:中介者模式详解与最佳实践1.引言在软件开发过程中,特别是复杂系统的构建中,模块间的交互往往成为影响代码质量的重要因素。当模块之间耦合度过高时,系统的维护、扩展和理解成本都会显著增加。为了降低模块之间的耦合度,保持系统的灵活性和可维护性,我们可以使用设......
  • [设计模式]工厂模式
    简单工厂//计算类的基类@Setter@GetterpublicabstractclassOperation{privatedoublevalue1=0;privatedoublevalue2=0;protectedabstractdoublegetResule();}//加法publicclassOperationAddextendsOperation{@Overrideprote......
  • [设计模式]单例模式
    单例模式懒汉式,线程不安全publicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}publicstaticSingletongetInstance(){if(instance==null){instance=newSingleton();}......
  • [设计模式]装饰者模式
    抽象构件publicabstractclassFastFood{publicStringdesc;publicintprice;publicabstractStringgetDesc();publicabstractintgetPrice();}具体构件米饭publicclassRiceextendsFastFood{publicRice(){this.desc......
  • Java设计模式和AOP编程
    Java六大设计原则;Java23种设计模式(在此介绍三种设计模式)Java设计模式单例模式应用场景:spring中bean的作用域用的就是单例模式//基本的单例模式————懒汉式publicclassstudent{//3.创建static修饰的成员变量privatestaticstudentstu;//1.设计私......
  • C# 设计模式之模板方法模式
    总目录前言在日常的工作中,有时候我们做PPT,做合同,做简历,如果我们自己从头去写这些文档,不免有些太过耗时耗力;大多时候都是去找相关的PPT模板,合同模板,简历模板,拿过来直接用。为什么可以使用模板,因此这些资料大部分的信息和信息框架都是一致的,我们只需要将自己差异化的内容填......
  • C# 设计模式之代理模式
    总目录前言其实代理模式,在生活中无处不在;就比如租房,一般都是通过中介或者第三方的App去租房子(此处默认他们都是诚信友好的哈),那么为什么我们不自己找房子呢?租过房子应该都知道,自己找房子太麻烦了,既要找原房东,又要搞合同,出了问题扯皮也扯不清等等一些问题,主要是费时费力。......
  • Java设计模式—责任链模式(Chin of Responsibility)
    目录引言1.职责链设计模式简介1.1定义1.2解决的问题2.设计模式的结构2.1类图2.2示例代码3.优点4.缺点5.实际应用5.1SpringAOP5.2JavaServletFilter5.3ReactorPattern5.4Java中的日志记录库6.结论注意事项引言在软件开发中,设计模式是一......
  • Java的单例模式其实跟C的面向过程没什么区别
    这个我觉得倒也没有那么好笑,Java里面Singleton用的的确是有点多得离谱了,实际上把一个Singleton类的所有成员(包括字段和方法)都换成静态也没有什么不可以的,用Singleton主要是这样几个优点:1、Singleton类可以用接口和继承,static不行2、因此,Singleton类稍微保留了一点多态能力,例如可以......
  • 【设计模式#1】Facade设计模式(外观设计模式)的简单理解
    最近接手了一个需要重构的老项目,里面大量使用了Facade设计模式来整合各个子系统的功能,故简单梳理学习一下该设计模式的概念。外观模式(FacadePattern)是一种结构型设计模式,它通过为复杂子系统提供一个简单的接口,从而简化客户端与子系统的交互。为了更好地理解这一模式,我们可以举一......