设计模式

设计模式(一)


单例设计模式

单例就是某个实体只产生一个对象,如果只能产生一个对象那么就需要将构造函数设置为private的,那么就无法手动去创建该类的实体对象。

public class Student {

     private Student(){}

     private static Student s=new Student();

     public static Student getInstance(){

          return s;

     }

}

由于在类中直接创建除了实体的对象,这种方式被称为饿汉式。但是如果创建该对象的时候需要消耗大量的资源,那么在不使用该对象的时候尽量不要去初始化

public class Student {

     private Student(){

     //消耗很多资源

     }

     private static Student s;

     public static Student getInstance(){

          if(s==null){

               s=new Student();

          }

          return s;

     }

}

上面这种方式避免了在不需要使用实体对象的时候对实体对象进行初始化,但是在多线程并发的时候,会出现线程1执行到s=new Student()的时候线程2执行到if(s==null),这个时候就有可能创建两个实体对象,为了避免以上的情况出现需要添加synchronized关键字。

public class Student {

     private static Student s;

     private Student(){}

     public static Student getInstance(){

          if(s == null){

               synchronized(Student.class){

                    if(s == null){

                         s = new Student();

                    }

               }

          }

          return instance;

     }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 前言 本文主要参考 那些年,我们一起写过的“单例模式”。 何为单例模式? 顾名思义,单例模式就是保证一个类仅有一个...
    tandeneck阅读 2,531评论 1 8
  • 一. Java基础部分.................................................
    wy_sure阅读 3,832评论 0 11
  • 面向对象的六大原则 单一职责原则 所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于...
    JxMY阅读 961评论 1 3