文档章节

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

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

 

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

 

  创建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工程师
设计模式1——Singleton设计模式

Singleton单例模式是最简单的设计模式,它的主要作用是保证在程序运行生命周期中,使用了单例模式的类只能有一个实例对象存在。单例模式实现了类似C语言中全局变量的功能,单例模式常用于注册...

小米米儿小
2013/12/05
0
0
【23种设计模式之一】单例设计模式(翻译)

引言: 这一系列文章,翻译自网络上的文章,不过中间会夹杂着个人的理解,非原创,不过中文应该算是原创。 下面介绍,使用设计模式的一些好处: 1、设计模式是已经在工业生产中使用的,用于解...

敲代码猥琐男
2015/01/13
0
2
JavaScript设计模式系列三之单例模式(附案例源码)

文章初衷 设计模式其实旨在解决语言本身存在的缺陷 目前javaScript一些新的语法特性已经集成了一些设计模式的实现, 大家在写代码的时候,没必要为了用设计模式而去用设计模式, 那么我这边为什...

小钱钱阿圣
2017/09/22
0
0
JS单例模式《JavaScript设计模式与开发实践》阅读笔记

此文仅记录本人阅读《JavaScript设计模式与开发实践》这个本时的感受,感谢作者曾探写出这么好的一本书。如有冒犯,如有错误,请联系本人:luogao_lg@sina.com处理。 这一章让我知道了单例模...

RoyLuo
05/17
0
0
为什么java中用枚举实现单例模式会更好

枚举单例是java中使用枚举提供一个实例对象来实现单例模式的一种新方法,虽然单例模式在java中早已存在,但枚举单例实际上从java5引入枚举作为它的关键特性之后相对来说还是一个新的概念,这...

zhoujy
2013/06/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

android webrtc使用opensl es

1. java层开启开关 peerConnectionParameters = new PeerConnectionClient.PeerConnectionParameters(); 接口中的useOpensles参数设置为true 2. /system/etc/permissions/下新增and......

bill_shen
25分钟前
0
0
读《高性能mysql》记录

1 2

李佳顺
26分钟前
0
0
Element UI框架+Vue开发搭建示例

一、关于Element 1.Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,官方网址:http://element-cn.eleme.io/#/zh-CN 2.Element UI 是饿了么前端团队倾情打造htt...

tianma3798
28分钟前
2
0
Fragment整理

1、Fragment父类 Fragment的父类有两个,分别为android.app.Fragment和android.support.v4.app.Fragment。建议使用android.support.v4.app.Fragment。因为此Fragment在所有的android版本中可...

西米小娅
35分钟前
0
0
mysql报错:所选列未在GROUP BY子句中 的解决方法(laravel框架)

数据库配置文件database.php文件的 'mysql' => [ 'strict' => false] strict改为false,应该是开启宽松模式,就不会报错了...

郭周园
38分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部