文档章节

单例设计模式 (代码实现)

Jusenr
 Jusenr
发布于 2016/05/17 00:23
字数 385
阅读 3
收藏 0

精选30+云产品,助力企业轻松上云!>>>

 

  ---单例设计模式之饿汉式---

 

  创建SingleInstance类

 1 /**
 2  * 单例设计模式之饿汉式
 3  */
 4 public class SingleInstance {    
 5     /**
 6      * 私有化构造方法
 7      */
 8     private SingleInstance() {}
 9     /**
10      * 成员变量
11      */
12     private static SingleInstance instance = new SingleInstance() ;
13     /**
14      * 提供一个静态的成员方法,返回该对象
15      */
16     public static SingleInstance getInstance() {
17         return instance ;
18     }
19 }

 

  创建测试类SingleInstanceDemo

 

 1 /**
 2  * 单例设计模式的思想:    保证该类在内存中只有一个实例(对象)
 3  * 优点节省内存,提高内存利用率
 4  */
 5 public class SingleInstanceDemo {
 6     
 7     public static void main(String[] args) {
 8         
 9         // 调用方法获取对象
10         SingleInstance instance1 = SingleInstance.getInstance() ;
11         SingleInstance instance2 = SingleInstance.getInstance() ;
12         
13         // 输出
14         System.out.println(instance1 == instance2);
15     }
16 }

 

 

-------------------------------------------------------------------------------------------------------------

 

  ---单例设计模式之懒汉式---

 

  创建SingleInstance2

 1 /**
 2  * 单例设计模式之懒汉式
 3  * 
 4  * 面试中写那种单例设计模式呢?
 5  *         面试中写懒汉式:    因为懒汉式体现了两种思想, 第一种线程问题 , 第二种 延迟加载
 6  * 
 7  *    开发中写饿汉式
 8  */
 9 public class SingleInstance2 {
10     /**
11      * 私有化构造方法
12      */
13     private SingleInstance2() {}
14     /**
15      * 提供一个成员变量
16      */
17     private static SingleInstance2 instance = null ;
18     /**
19      * 提供一个静态的成员方法
20      */
21     public static synchronized SingleInstance2 getInstance() {
22     
23         if(instance == null){
24             instance = new SingleInstance2() ;
25         }
26         return instance ;
27     }
28 }

 

  创建测试类SingleInstanceDemo2

 

 1 public class SingleInstance2Demo {
 2     
 3     public static void main(String[] args) {
 4         
 5         // 获取对象
 6         SingleInstance2 instance1 = SingleInstance2.getInstance() ;
 7         SingleInstance2 instance2 = SingleInstance2.getInstance() ;
 8         
 9         // 比较
10         System.out.println(instance1 == instance2);
11         
12     }
13 
14 }

 

Jusenr
粉丝 0
博文 20
码字总数 10876
作品 0
西安
Android工程师
私信 提问
加载中
请先登录后再评论。

暂无文章

CertBot免费生成HTTPS永久SSL证书 Linux CentOS 6.8

CertBot官网 点它------------------------------------------------------>点我 1:执行以下命令安装certbot-auto: wget https://dl.eff.org/certbot-auto sudo mv certbot-auto /usr/l......

osc_ylezri59
53分钟前
15
0
zabbix4.0完整安装过程

zabbix完整安装过程 我的安装环境 一. 安装LAMP环境 1.1 Linux 1.2 Apache 1.3 Mysql或者使用mariaDB也可以 1.4 php 二 安装zabbix 2.1 下载安装 2.2 配置数据库 2.3 创建表,添加zabbix用户 ...

osc_73pstnki
54分钟前
10
0
初学者的Linux——管理LVM逻辑卷

Linux–管理LVM逻辑卷 文章目录 Linux--管理LVM逻辑卷 LVM 物理卷(Physical Volume,PV) 卷组(Volume Group,VG) 逻辑卷(Logical Volume,LV) 逻辑卷创建实验 创建物理卷,命令:pvcre...

osc_g96tdr1z
54分钟前
11
0
Tomcat Filter之动态注入

前言 最近,看到好多不错的关于“无文件Webshell”的文章,对其中利用上下文动态的注入Filter的技术做了一下简单验证,写一下测试总结,不依赖任何框架,仅想学习一下tomcat的filter。 先放几...

osc_8j0twt2u
55分钟前
17
0
接口测试管理,你不来了解一下?

在日常的开发模式里,前端负责页面和动态脚本的处理,服务端负责业务逻辑和接口的实现。当前端需要服务端提供的接口实现动态数据展示和交时,服务端完成接口开发后会提供一个接口文档给到前端...

osc_0g0vbf0z
56分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部