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单例模式(饿汉式和懒汉式)的更多相关文章

  1. Singleton模式(单例模式) 饿汉式和懒汉式

    目的:整个应用中有且只有一个实例,所有指向该类型实例的引用都指向这个实例. 好比一个国家就只有一个皇帝(XXX),此时每个人叫的“皇帝”都是指叫的XXX本人; 常见单例模式类型: 饿汉式单例:直接将对 ...

  2. Java中单例设计模式,饿汉式和懒汉式

    Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式单例. 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类必须自己创建自己的唯 ...

  3. Java中如果把构造方法也私有化,如何创建对象?Java的单例设计模式——饿汉式和懒汉式区别

    Java的单例模式——饿汉式 package com.swift; //Java单例设计模式——恶汉式 public class SinglePerson { private String name= ...

  4. Java 单例设计模式之 饿汉式和懒汉式

    public class InstanceSampleTest { public static void main(String[] args) { /** 单例设计模式的 饿汉式和懒汉式 * 单例模 ...

  5. Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?

    什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的. 如果重 ...

  6. java基础10 单例模式之饿汉式和懒汉式单例

    前言: 软件行业中有23中设计模式 单例模式    模版模式    装饰者模式    观察者模式    工厂模式    ........... 单例模式 1. 单例模式包括 1.1 饿汉式单例 1.2 ...

  7. 设计模式:单例模式介绍及8种写法(饿汉式、懒汉式、Double-Check、静态内部类、枚举)

    一.饿汉式(静态常量) 这种饿汉式的单例模式构造的步骤如下: 构造器私有化:(防止用new来得到对象实例) 类的内部创建对象:(因为1,所以2) 向外暴露一个静态的公共方法:(getInstance) ...

  8. java核心知识点学习----equals和==的比较、单例模式,饿汉式,饱汉式

    最近发现自己学习能力变慢了,想来想去还是发现是因为自己Java基础没有打扎实,接下来的一系列文章将主要记录自己对于Java的最基础知识点的学习. 一.equals和==的比较 先看例子: packag ...

  9. C#单例---饿汉式和懒汉式

    单例模式: 步骤: 1.定义静态私有对象 2.构造函数私有化 3.定义一个静态的,返回值为该类型的方法,一般以Getinstance/getInit为方法名称 单例模式有懒汉和饿汉,最好使用饿汉 1. ...

随机推荐

  1. JAVA获取六位随机数

    public static String getSixNum() { String str = "0123456789"; StringBuilder sb = new Strin ...

  2. C语言获取文件大小(字节)

    代码 核心代码 FILE *pfile = nullptr; int ret = fopen_s(&pfile, str.c_str(), "rb"); /// 0 = 打 ...

  3. 【LeetCode】1465. 切割后面积最大的蛋糕 Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 找最大间隔之积 日期 题目地址:https://lee ...

  4. 【九度OJ】题目1177:查找 解题报告

    [九度OJ]题目1177:查找 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1177 题目描述: 读入一组字符串(待操作的),再读入 ...

  5. 【LeetCode】917. Reverse Only Letters 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 单指针 双指针 日期 题目地址: https:/ ...

  6. 【因果推断经典论文】Direct and Indirect Effects - Judea Pearl

    Direct and Indirect Effects Author: Judea Pearl UAI 2001 加州大学洛杉矶分校 论文链接:https://dl.acm.org/doi/pdf/1 ...

  7. python学习第六天:python基础(条件判断、循环)

    条件判断 格式 if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> ...

  8. (原创)WinForm中莫名其妙的小BUG——RichTextBox自动选择字词问题

    一.前言 使用WinForm很久了,多多少少会遇到一些小BUG. 这些小BUG影响并不严重,而且稍微设置一下就能正常使用,而且微软一直也没有修复这些小BUG. 写本系列文章,是为了记录一下这些无伤大雅 ...

  9. 第三十一个知识点:Game Hopping证明

    第三十一个知识点:Game Hopping证明 关于安全证明, 目前主流的方法有安全归约证明 (由 single game 实现) 和 Game Hopping (由 game sequence 实现 ...

  10. [opencv]KAZE、AKAZE特征检测、匹配与对象查找

    AkAZE是KAZE的加速版 与SIFT,SUFR比较: 1.更加稳定 2.非线性尺度空间 3.AKAZE速度更加快 4.比较新的算法,只有Opencv新的版本才可以用 AKAZE局部匹配介绍 1.A ...