7.JAVA基础复习——JAVA中的设计模式单例模式
设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
总体来说设计模式分为23种三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
单例模式:类在内存中只有一个对象实例。
单例模式有两种实现方式:
饿汉式:类加载时创建对象
懒汉式:当需要实例对象时才创建对象(延迟加载)
代码:
public class Single {
/*单例模式:类在内存中只有一个对象实例。有两种方式实现
*实现细节:
* 1.不让创建对象由我们来创建对象(私有化构造:不可创建对象。私有化实例:不可访问此对象。)
* 2.定义一个方法用来获取实例对象。
* 4.静态变量会在类加载时执行所以堆内存中存在Single()对象。
* 5.程序会先从栈中找如果没有去堆中寻找对象。
* 6.堆内存中有此对象所以会返回此对象。
* 7.第二次调用时同理会返回此对象所以指向的是同一个对象
*/
//单例模式饿汉式:类加载时就创建实例对象
private static Single s = new Single();
public static Single getSingle(){
return s;
}
//私有化构造不让创建对象
private Single(){}
/*单例模式:类在内存中只有一个对象实例。
*实现细节:
* 1.不让别创建对象由我们来创建对象(私有化构造:不可创建对象。私有化实例:不可访问此对象。)
* 2.定义一个方法用来获取实例对象。
* 4.静态变量会在类加载时执行此处为空没由创建实例对象
* 5.程序会先从栈中找如果没有去堆中寻找对象。
* 6.堆内存中没有此对象所以会先创建实例对象然后返回
* 7.当第二次调用时因为堆内存中有了此对象所以会直接返回所以都是指向同一个实例对象。
*/
//单例模式懒汉式:类加载时不创建对象,用到实例时才加载。
private static Single s = null;
public static Single getSingle(){
if(s==null){
s = new Single();
}
return s;
}
}
7.JAVA基础复习——JAVA中的设计模式单例模式的更多相关文章
- 3.JAVA基础复习——JAVA中的类与对象
什么是对象: 就是现实中真实的实体,对象与实体是一一对应的,现实中每一个实体都是一个对象在. JAVA中的对象: Java中通过new关键字来创建对象. 类: 用JAVA语言对现实生活中的事物进行描述 ...
- 5.JAVA基础复习——JAVA中的static关键字作用与用法
static关键字: 特点: 1.static是一个修饰符,用于修饰成员.(成员变量,成员函数)static修饰的成员变量 称之为静态变量或类变量. 2.static修饰的成员被所有的对象共享. 3. ...
- 4.JAVA基础复习——JAVA中的构造函数与this关键字
构造函数:构建创造对象时调用的函数 特点: 1.函数名与类名相同. 2.不用定义返回值类型. 3.没有具体的返回值. public class Demo { private int age; priv ...
- [java基础]复习 java三大特性,异常,接口,String
继承 关键字extends 继承是为了不同的实现(龙生九子,各不相同) 单继承,一个类最多只能有一个父类 除了私有的外,子类可以访问父类的方法.属性. new过程中,父类先进行初始化,可通过super ...
- 6.JAVA基础复习——JAVA中文档注释与帮助文档的生成
java中的文档注释:用于说明该类的功能作用方便他人使用关键词前需要加@符 用于类的注释 @author name 作者 @version v1.0 版本 …… 用于函数的注释 @param para ...
- Java基础复习--java.util.Timer定时任务
在java中,Timer类主要用于定时性.周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下. (1)sche ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
随机推荐
- Java程序生成一个Access文件
package access; import java.io.File;import java.io.IOException;import java.sql.SQLException;import j ...
- Overview of Azure Storage
Azure Storage types Blob storage. Containers for data blobs. The three types of blobs are: Page blob ...
- mysql-cluster集群配置
环境: centos7:192.168.1.16,192.168.1.170 mysql-cluster-community-7.6.8-1.el7.x86_64.rpm-bundle.tar 安装: ...
- CMSC 216 Exercise #5
CMSC 216 Exercise #5 Spring 2019Shell Jr (”Shellito”) Due: Tue Apr 23, 2019, 11:30PM1 ObjectivesTo p ...
- LeetCode 122 Best Time to Buy and Sell Stock II 解题报告
题目要求 Say you have an array for which the ith element is the price of a given stock on day i. Design ...
- js之history
浏览历史记录window.history,不会刷新页面内容,只会更改历史记录,用location.href 才会刷新 1. history.pushState() & history.repl ...
- 2018-2019-2 网络对抗技术 20165236 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165236 Exp3 免杀原理与实践 一.实践内容(3.5分) 1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5 ...
- vue中动态样式不起作用? scoped了解一下
vue中style标签使用属性scoped的注意事项 style上添加属性scoped可以实现样式私有化,但是在使用动态样式时,样式会不起作用.可以先去掉scoped
- AES加密解密 助手类 CBC加密模式
"; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); ...
- 使用datagrid时json的格式
EasyUI的DataGrid要求返回的JSON数据集是这样的形式: {"total":总记录数量,"rows":[数据记录数组]}. 例如: {"t ...