java单例模式(饿汉式和懒汉式)
1 /*
2 * 设计模式:对问题行之有效的解决方式。其实它是一种思想。
3 *
4 * 1,单例设计模式
5 * 解决的问题:就是可以保证一个类在内容中的对象唯一性。
6 *
7 * 必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
8 *
9 * 如何保证对象唯一性呢?
10 * 1,不允许其他程序用new创建该类对象。
11 * 2,在该类创建一个本类实例。
12 * 3,对外提供一个方法让其他程序可以获取该对象。
13 *
14 * 步骤:
15 * 1,私有化该类构造函数。
16 * 2,通过new在本类中创建一个本类对象。
17 * 3,定义一个公有的方法,将创建的对象返回。
18 */
19 //饿汉式 (开发)
20 class Single{//类一加载, 对象就已经存在了。
21 static Single s = new Single();
22 private Single() {}
23 public static Single getInstance() { //String name //给一个方法 可控
24 return s;
25 }
26 }
27 //懒汉式 存在一些问题:如果后期被多线程并发访问时可能保证不了对象唯一性,存在安全隐患。 (面试会问)
28 class Single2{//类加载进来,没有对象,只有调用了getInstance方法时,才会创建对象。
29 //延迟加载形式。
30 private static Single2 s = null;
31
32 private Single2() {}
33
34 public static Single2 getInstance() {
35 if(s == null) {
36 s = new Single2();
37 }
38 return s;
39 }
40 }
41 public class SingleDemo {
42 public static void main(String[] args) {
43 Single ss = Single.getInstance();
44 Single s1 = Single.getInstance();
45 Single s2 = Single.getInstance();
46 System.out.println(s1 == s2);
47 //Single ss = Single.s; //也可以但是不可控。
48 Test t1 = Test.getInstance();
49 Test t2 = Test.getInstance();
50 t1.setNum(10);
51 t2.setNum(20);
52 System.out.println(t1.getNum());
53 System.out.println(t2.getNum());
54 }
55 }
56 class Test{
57 private int num;
58 //保证唯一性加入下面三句;
59 private static Test t = new Test();
60 private Test() {}
61 public static Test getInstance() {
62 return t;
63 }
64 public void setNum(int num) {
65 this.num = num;
66 }
67 public int getNum() {
68 return num;
69 }
70
71 }
java单例模式(饿汉式和懒汉式)的更多相关文章
- Singleton模式(单例模式) 饿汉式和懒汉式
目的:整个应用中有且只有一个实例,所有指向该类型实例的引用都指向这个实例. 好比一个国家就只有一个皇帝(XXX),此时每个人叫的“皇帝”都是指叫的XXX本人; 常见单例模式类型: 饿汉式单例:直接将对 ...
- Java中单例设计模式,饿汉式和懒汉式
Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯 ...
- Java中如果把构造方法也私有化,如何创建对象?Java的单例设计模式——饿汉式和懒汉式区别
Java的单例模式——饿汉式 package com.swift; //Java单例设计模式——恶汉式 public class SinglePerson { private String name= ...
- Java 单例设计模式之 饿汉式和懒汉式
public class InstanceSampleTest { public static void main(String[] args) { /** 单例设计模式的 饿汉式和懒汉式 * 单例模 ...
- Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?
什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的. 如果重 ...
- java基础10 单例模式之饿汉式和懒汉式单例
前言: 软件行业中有23中设计模式 单例模式 模版模式 装饰者模式 观察者模式 工厂模式 ........... 单例模式 1. 单例模式包括 1.1 饿汉式单例 1.2 ...
- 设计模式:单例模式介绍及8种写法(饿汉式、懒汉式、Double-Check、静态内部类、枚举)
一.饿汉式(静态常量) 这种饿汉式的单例模式构造的步骤如下: 构造器私有化:(防止用new来得到对象实例) 类的内部创建对象:(因为1,所以2) 向外暴露一个静态的公共方法:(getInstance) ...
- java核心知识点学习----equals和==的比较、单例模式,饿汉式,饱汉式
最近发现自己学习能力变慢了,想来想去还是发现是因为自己Java基础没有打扎实,接下来的一系列文章将主要记录自己对于Java的最基础知识点的学习. 一.equals和==的比较 先看例子: packag ...
- C#单例---饿汉式和懒汉式
单例模式: 步骤: 1.定义静态私有对象 2.构造函数私有化 3.定义一个静态的,返回值为该类型的方法,一般以Getinstance/getInit为方法名称 单例模式有懒汉和饿汉,最好使用饿汉 1. ...
随机推荐
- 使用iframe内嵌PC网站实现高度自适应
加个样式 <style> iframe { display: block; border: none; height: 90vh;/*设置高度百分比,一直调到只有一个滚动调为止*/ wid ...
- 【九度OJ】题目1118:数制转换 解题报告
[九度OJ]题目1118:数制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1118 题目描述: 求任意两个不同进制非 ...
- 【LeetCode】436. Find Right Interval 解题报告(Python)
[LeetCode]436. Find Right Interval 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: h ...
- 理解Android的四种启动模式
一:前言 四种模式分别为standard, singleTop, singleTask, singleInstance.自己应该明确一个概念先,single到底要single什么.每一个应用app都有 ...
- Probabilistic Principal Component Analysis
目录 引 主要内容 EM算法求解 附录 极大似然估计 代码 Tipping M E, Bishop C M. Probabilistic Principal Component Analysis[J] ...
- 由于ios由UIWebView换成了WKWebview内核后导致webview请求接口文件上传,后台接收不到文件
2020年4月起App Store将不再接受使用UIWebView的新App上架.2020年12月起将不再接受使用UIWebView的App更新. 解决后台文件接收不到的问题 function GLA ...
- IM2603资料 Type-C 扩展坞电源管理芯片
用于带有集成降压转换器的 Type-C 外围应用的电源管理 IC IM2603 是一款主要用于 Type-C 外围应用的电源管理 IC. 它集成了一个带有内置高侧 MOSFET 的同步降压转换器和一个 ...
- 编写Java程序,使用ThreadLocal类,项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款
查看本章节 查看作业目录 需求说明: 某用户共有两张银行卡,账户名称相同,但卡号和余额不同.模拟用户使用这两张银行卡进行消费的过程,并打印出消费明细 实现思路: 项目中创建账户类 Account,类中 ...
- Java面向对象笔记 • 【第4章 抽象类和接口】
全部章节 >>>> 本章目录 4.1 抽象类 4.1.1 抽象方法和抽象类 4.1.2 抽象类的作用 4.1.3 实践练习 4.2 final修饰符 4.2.1 final ...
- docker学习:docker容器数据卷
是什么 docker的理念 将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的 容器之间希望有可能共享数据 docker容器产生的数据,如果不通过docker ...