java单例设计模式总结及举例
* 设计模式:前人总结出来的经验,被后人直接拿来使用.
* 单例设计模式:一个类只允许有一个对象,将这个对象作为一个全局的访问点,提供出去供大家使用.
* 分析:
* 1.用户只能有一个对象
* 2.全局的访问点:得到的对象就是全局的访问点. 如何做到全局?让static去修饰
* 3.如何提供出去?
* 4.供大家使用?--单例的功能
* 单例类的作用:
* 1.可以实现两个对象之间的传值
* 2.可以在全局范围内调用很多的功能.
* 好处:可以让两个对象在完全没有关系的前提下,实现值的传递,降低了耦合性,提高了内聚性
* (耦合性,内聚性在微观上说:描述的是类与类之间的关系。好处:我们应该尽量提高内聚性,减少耦合性,可以提高程序的健壮性,增加代码的可移植性,方便实现模块儿化编程
* 如何做到低耦合高内聚? 在处理类与类关系的时候,让类之间的关系越紧密耦合性越高,内聚性越低.反之,关系越松散耦合性越低,内聚性越高.)
*/
分类:饿汉式、懒汉式:格式都差不多,懒汉式有一个判断,但是两者的大体框架都这样,实在不理解可以背下来以后会明白的。
1、饿汉式-在定义变量的同时完成初始化
class SingleInstance{//创建单例类
//2.在类的内部创建一个当前类型的属性并赋值--在类的内部得到了当前类的一个对象
//将变量私有化,让外界无法直接访问 给变量用static修饰让他成为全局的访问点
private static SingleInstance singleInstance = new SingleInstance();
//1.将构造方法私有化
private SingleInstance() {
}
//3.使用公共的方法将变量提出出去,并将方法设置成静态的
public static SingleInstance getInstance(){
return singleInstance;
}
}
2、懒汉式-开始只是定义变量,什么时候使用什么时候赋值
class SingleInstance1{
private static SingleInstance1 singleInstance = null;//先不赋值
private SingleInstance1() {
}
public static SingleInstance1 getInstance(){
if (singleInstance == null) { //判断是否为空
singleInstance = new SingleInstance1();//用的时候再赋值
}
return singleInstance;
}
int num;//这个num供之后的举例使用
}
//主函数:
public class Demo5 {
public static void main(String[] args) {
SingleInstance1 s1 = SingleInstance1.getInstance();
SingleInstance1 s2 = SingleInstance1.getInstance();
System.out.println(s1 == s2);//运行后输出true,说明获取到的是同一个对象
//实例:
//功能:将A类中num1的值传给B类对象的num2
A a = new A();
a .num1 = 4;
B b = new B();
// b.num2 = a.num1; 方法一:直接赋值,一般类的成员变量是私有的,所以不推荐
// b.test(a); 方法二:通过传参间接赋值
// 方法三:通过单例实现传值 :
a.ceshi1();
b.ceshi2();
}
}
//测试单例的功能
class A{
int num1;
//测试通过单例传值
public void ceshi1() {
SingleInstance1 s1 = SingleInstance1.getInstance();
s1.num = num1; //把num1传给num
}
}
class B{
int num2;
//通过传参赋值
public void test(A a){
num2 = a.num1;
}
//测试通过单例传值
public void ceshi2(){
SingleInstance1 s2 = SingleInstance1.getInstance();
num2 = s2.num;//把num传给num2
}
}
文章原创,转载请注明出处谢谢
java单例设计模式总结及举例的更多相关文章
- Java单例设计模式的实现
1. 单例设计模式的定义 单例设计模式确保类只有一个实例对象,类本身负责创建自己的对象并向整个系统提供这个实例.在访问这个对象的时候,访问者可以直接获取到这个唯一对象而不必由访问者进行实例化. 单例设 ...
- Java——单例设计模式
设计模式:解决某一类问题最行之有效的方法.Java中23种设计模式:单例设计模式:解决一个类在内存中只存在一个对象. 想要保证对象唯一.1,为了避免其他程序过多建立该类对象.先禁止其他程序建立该类对象 ...
- 转:java单例设计模式
本文转自:http://www.cnblogs.com/yinxiaoqiexuxing/p/5605338.html 单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton ...
- Java单例设计模式和多例设计模式
单例设计模型 教学视频链接:https://edu.aliyun.com/course/1011 1,private不可以在类外部访问,但可以在内部访问 2,此时Singleton类内部的instan ...
- java 单例设计模式
1.饿汉单例设计模式: 步骤 : 1.定义一个私有的静态成员变量来引用对象(私有的静态对象),设置对象唯一. 2.私有化构造方法,防止new对象. 3.创建一个公开的静态方法,返回上面的 ...
- 对Java单例设计模式中懒汉式类定义的讨论
全世界人民都知道单例设计模式中类的定义分为懒汉式和饿汉式两种,然而今天并不是要把它们做横向比较.实际上,不论饿汉式类的代码看起来有多么美轮美奂,在实际开发中它的效率总是不如懒汉式的.然而在笔试和面试中 ...
- Java单例设计模式(实现Java的一个类只有一个对象)
单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类. 核心便是希望一个类只有一个对象. 如何实现类在内存中只有一个对象呢? 第一步:构造私有:第二步:本身提供一 ...
- java—单例设计模式
单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 1.构造方法私有化 2.声明一个本类对象 3.给外部提供一个静态方法获取对象实例 什么时候使用? 1.通过在工具类的设计中使用: ...
- Java 单例设计模式之 饿汉式和懒汉式
public class InstanceSampleTest { public static void main(String[] args) { /** 单例设计模式的 饿汉式和懒汉式 * 单例模 ...
随机推荐
- SpringSecurity简单记录
在pom.xml中将springsecurity导入后,对于springsecurity会出现三个依赖包:spring-security-web,spring-security-config,spri ...
- 获取百度地图POI数据三(模拟关键词搜索)
上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词 这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等.有了这些数据,我们就可以通过代码,模拟我们在百度地图的搜索框中搜 ...
- HTML table表格转换为Markdown table表格[转]
举个栗子,当我想要把这个页面的第一个表格转换成Markdown Table时,怎么做更快,效率更高? 只需简单三步,请看示例: 第一步:复制包含HTML table标签的代码 复制table代码(HT ...
- Python 天气查询到实现语音播放
import requests #引用requests模块import pygame # 获取天气def inquery(self): url = "https://free-api.hew ...
- 安装oracle数据库的操作步骤
1. vnc启动之后,进入数据库安装包所在目录,此处是/home/DB/backup/database 2. 输入命令 ./runInstaller 3. 弹出linux图形化界面,同时弹出Oracl ...
- pytest自动化5:pytest-html插件--生成html报告
前言:pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告.兼容Python 2.7,3.6 pytest-html 1. pip 安装: pip install pytes ...
- java第五周作业
Java Applet Applet 是一种 Java 程序.它一般运行在支持 Java 的 Web 浏览器内.因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程 ...
- 开始PYTHON之路
曾经的功献给了球场酒精 曾经的激情也献给了爱情 曾经的智商用来副本求生 曾经的VB6老迈的只剩点0 曾经的SQL2000都不兼容 曾经........ 还有一些理想没有实现 还得继续在这个世界谋生 岁 ...
- java接口深入
1.抽象类. java常规类中,有些方法并不是固定的,而是在不同的情况下有不同的实现的,比如一个人,在公司要工作,在学校要学习,在食堂要吃饭,但是这个人还有相同的地方,比如不论在哪里都要呼吸,看,挺, ...
- jcifs windows 域账户单点登录(转)
1.首先从http://jcifs.samba.org 这个站点下载 jcifs-1.3.2.jar包. 2.把这个包放到相应的lib文件下面. 3.对web.xml文件进行配置,添加如下内容 < ...