单例模式复习 向右看齐 2023-06-16 10:36 49阅读 0赞 ### 懒汉式 ### 一步一步走 一、非单例举例 package test2; class SingleTon{ } //饿汉式单例模式,采用双重检验 public class Test3 { public static void main(String[] args) { SingleTon s1= new SingleTon(); SingleTon s2= new SingleTon();//这样的写法可以创建多个对象,不是单例模式 } } 二、单例模式但不线程安全,当多个线程调用getSingleton方法时,可能多个线程同时判断为空而新建对象,而如果给该方法加上synchronized关键字,线程安全了但是效率低下,是不提倡的。 package test2; class Singleton{ private static Singleton singleTon;//由于该字段被静态方法调用,所以也要加static关键字设置为静态变量 //构造方法私有化 private Singleton(){//因为要单例,所以构造方法私有化 } public static Singleton getSingleton(){ //因为要用类直接调用该方法所以,加static关键字 if(null == singleTon){ singleTon = new Singleton(); } return singleTon; } } //饿汉式单例模式,采用双重检验 public class Test3 { public static void main(String[] args) { Singleton s1= Singleton.getSingleton(); Singleton s2= Singleton.getSingleton();//这样的写法可以创建多个对象,不是单例模式 System.out.println(s1==s2);//返回true } } 三、线程安全处理 package test2; class Singleton{ private static Singleton singleTon;//由于该字段被静态方法调用,所以也要加static关键字设置为静态变量 //构造方法私有化 private Singleton(){//因为要单例,所以构造方法私有化 } public static Singleton getSingleton(){ //因为要用类直接调用该方法所以,加static关键字 if(null == singleTon){ //第一层检验,加快效率,判断是否需要新建对象 synchronized(Singleton.class){ if(null == singleTon){//第二层检验,多线程处理 singleTon = new Singleton(); } } } return singleTon; } } //饿汉式单例模式,采用双重检验 public class Test3 { public static void main(String[] args) { Singleton s1= Singleton.getSingleton(); Singleton s2= Singleton.getSingleton();//这样的写法可以创建多个对象,不是单例模式 System.out.println(s1==s2);//返回true } } ### 饿汉式 ### class Singleton{ private static Singleton singleTon = new Singleton(); //由于用static修饰,所以对象在加载class文件时只会创建一次, //保证了线程的安全性 public static Singleton getSingleton(){ //因为要用类直接调用该方法所以,加static关键字修饰 return singleTon; } } //饿汉式单例模式,采用双重检验 public class Test3 { public static void main(String[] args) { Singleton s1= Singleton.getSingleton(); Singleton s2= Singleton.getSingleton();//这样的写法可以创建多个对象,不是单例模式 System.out.println(s1==s2);//返回true } }
相关 单例模式 http://blog.csdn.net/zhengzhb/article/details/7331369 定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实 曾经终败给现在/ 2022年09月25日 15:30/ 0 赞/ 353 阅读
相关 单例模式 class sigle{ protected static $ins = null; public function getIns(){ 深藏阁楼爱情的钟/ 2022年07月20日 20:27/ 0 赞/ 388 阅读
相关 Java单例模式(复习) 单例模式的概念: 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。 妖狐艹你老母/ 2022年06月01日 08:40/ 0 赞/ 143 阅读
相关 单例模式 <table> <tbody> <tr> <td style="vertical-align:top;width:.6868in;"> <p style 矫情吗;*/ 2021年11月22日 10:52/ 0 赞/ 400 阅读
相关 单例模式 单例模式 单例模式(SingletonPattern)是java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及 红太狼/ 2021年11月16日 05:30/ 0 赞/ 434 阅读
相关 单例模式 应用场景 1. windows的任务管理器 2. 网站的计数器 3. 应用程序的日志 4. 数据库连接池,因为数据库连接是一种数据库资源。数据库软件系统中使用数据 r囧r小猫/ 2021年11月11日 15:08/ 0 赞/ 452 阅读
相关 单例模式 单例模式有以下特征: 1. 只有一个对象存在 2. 对象的实例化必须在类中实现 一、懒汉模式(线程不安全) package com.kevin; 谁借莪1个温暖的怀抱¢/ 2021年10月01日 07:48/ 0 赞/ 448 阅读
相关 单例模式 1.定义 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 2.实现步骤 1. 将该类的构造方法定义为私有方法,这样其他处 小咪咪/ 2021年09月27日 13:56/ 0 赞/ 516 阅读
相关 单例模式 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责 Dear 丶/ 2021年09月17日 02:10/ 0 赞/ 451 阅读
还没有评论,来说两句吧...