java—单例设计模式
单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
1、构造方法私有化
2、声明一个本类对象
3、给外部提供一个静态方法获取对象实例
什么时候使用?
1、通过在工具类的设计中使用;
2、当一个类中没有属性;
3、该类作为工具类使用非常频繁。
两种方式:
一、饿汉式
package practice1;
//单例模式
public class Test7 {
public static void main(String[] args) {
Singleton s=Singleton.getInstance();
s.method();
}
}
class Singleton{
private static Singleton singleton=new Singleton();//定义时就创建对象
private Singleton(){//构造方法私有化
}
public static Singleton getInstance(){//给外部提供一个全局访问点,静态方法
return singleton;
}
public void method(){//测试方法
System.out.println("method");
}
}
饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以是线程安全的。
二、懒汉式
class Singleton2{
private static Singleton2 singleton2=null;//定义时不直接创建
private Singleton2(){}//构造方法私有化
public static Singleton2 getInstance(){
if(singleton2==null){
singleton2=new Singleton2();
}
return singleton2;
}
public void method(){//测试方法
System.out.println("method");
}
}
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单例设计模式总结及举例
* 设计模式:前人总结出来的经验,被后人直接拿来使用. * 单例设计模式:一个类只允许有一个对象,将这个对象作为一个全局的访问点,提供出去供大家使用. * 分析: * 1.用户只能有一个对象 * 2. ...
- 对Java单例设计模式中懒汉式类定义的讨论
全世界人民都知道单例设计模式中类的定义分为懒汉式和饿汉式两种,然而今天并不是要把它们做横向比较.实际上,不论饿汉式类的代码看起来有多么美轮美奂,在实际开发中它的效率总是不如懒汉式的.然而在笔试和面试中 ...
- Java单例设计模式(实现Java的一个类只有一个对象)
单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类. 核心便是希望一个类只有一个对象. 如何实现类在内存中只有一个对象呢? 第一步:构造私有:第二步:本身提供一 ...
- Java 单例设计模式之 饿汉式和懒汉式
public class InstanceSampleTest { public static void main(String[] args) { /** 单例设计模式的 饿汉式和懒汉式 * 单例模 ...
随机推荐
- php,判断ajax,get,post
PHP自定义函数判断是否为Get.Post及Ajax提交的方法 /** * 是否是AJAx提交的 * @return bool */ function isAjax(){ if(isset($_SER ...
- C++ dynamic_cast 的使用
C++中的dynamic_cast 执行运行时刻类型转换,起作用有点类似于Java当中的instance of reference:http://www.cnblogs.com/chio/archiv ...
- 11-DOM介绍
什么是DOM DOM:文档对象模型.DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构.目的其实就是为了能让js操作html元素而制定的一个规范. DOM就是由节点组成的. 解析过程 ...
- js去除字符串中的空格
//去除空格 function Trime(string){ return string.replace(/\s/ig,""); }
- java基础-day28
第05天 MySQL 今日内容介绍 u 数据库的概述 u MySQL和SQLyog的安装和使用 u SQL语句 第1章 数据库的概述 1.1 数据库的概述 1.1.1 概述 l 什么是数据库 ...
- 【转】sql递归查询问题
原文链接地址http://www.cnblogs.com/sweting/archive/2009/06/08/1498483.html 在工作中遇到一个问题,是需要sql递归查询的.不懂,于是到cs ...
- bootstrap2.1
<html> <head> <meta charset="utf-8" /> <title></title> ...
- iOS处理视图上同时添加单击与双击手势的冲突问题
_bgView.userInteractionEnabled = YES; //在cell上添加 bgView,给bgView添加两个手势检测方法 UITapGestureRecognizer *do ...
- title
事实上 @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import ur ...
- Linux vmstat
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.IO读写.CPU活动等进行监视.它是对系统的整体情况进行统计,不足之处是无法对某 ...