Java设计模式之单例设计模式 入门实例
一、基础概念
(1).单例设计模式:保证一个类在内存中的对象唯一性。
(2).应用场景:数据都存储在配置文件的对象中,多个程序对同一个配置文件的对象进行操作。一个程序要基于另一个程序操作后的结果进行操作。
(3)步骤:
1.构造函数私有化
2.自己new创建一个本类对象。
3.对外提供一个方法,让其他程序可以获取到这个对象。
(4)饿汉式:代码以上来就创建一个本类对象。
懒汉式:有数据传入时,才会创建一个本类对象。
二、饿汉式(非延迟加载形式)
(1).示例代码
class Single
{
//构造函数私有化
private Single(){}
//一上来就创建一个本类对象
static Single s = new Single(); ////对外提供一个方法getInstance,让其他程序可以获取到这个对象。
public static Single getInstance()
{
return s;
} }
class SingleDemo
{
public static void main(String[] args)
{ Single s1 = Single.getInstance(); //调用对象而不直接调用值,是为了可控。
Single s2 = Single.getInstance();
System.out.println(s1==s2);
}
}
(2).代码运行

三、懒汉式(延迟加载形式)
(1).示例代码
class Single
{
//有数据传入时,才会去创建本类对象。
private static Single s = null;
private Single(){} public static Single getInstance()//提供接口,获取实例
{
if(s==null)
s = new Single();
return s;
}
}
class SingleDemo
{
public static void main(String[] args)
{ Single s1 = Single.getInstance(); //调用对象而不直接调用值,是为了可控。
Single s2 = Single.getInstance();
System.out.println(s1==s2);
}
}
(2).代码运行

四、实例代码
p的名字是王小红,外界p1、p2都可以访问和修改p的名字。当p2修改p的名字为小红后,p1、p2访问p的名字都为小红。
class Person
{
//构造函数私有化
private String name;
private Person(String name)
{
this.name = name;
}
//创建一个本类对象,p的名字为wangxiaohong
private static Person p = new Person("wangxiaohong"); //对外提供一个方法getInstance,让其他程序可以获取到这个对象。
public static Person getInstance()
{
return p;
} public void setName (String name)
{
this.name = name;
} public String getName()
{
return this.name;
}
public void sleep()
{
System.out.println(name+".....sleep.....");
} }
class SingleDemo2
{
public static void main(String[] args)
{
Person p1 = Person.getInstance();
Person p2 = Person.getInstance();
p2.setName("xiaohong");//p的名字修改为xiaohong //p1和p2都是同一个对象p。
p1.sleep();
p2.sleep();
}
}
五、代码运行

Java设计模式之单例设计模式 入门实例的更多相关文章
- java软件设计模式只单例设计模式
概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计 ...
- Java学习笔记——单例设计模式Singleton
单例设计模式:singleton 解决的问题: 确保程序在运行过程中,某个类的实例instance只有一份. 特点: 1 构造函数私有化 2 自己内部声明自己 3 提供一个public方法,负责实例化 ...
- Java中常用来处理时间的三个类:Date、Calendar、SimpleDateFormate,以及Java中的单例设计模式:懒汉式、饿汉式以及静态内部类式
(一)java.util.Date类 1.该类有一个long类型的属性:用来存放时间,是用毫秒数的形式表示,开始的日期是从1970年1月1号 00:00:00. 2.该类的很多方法都已经过时,不 ...
- java设计模式之单例设计模式
单例设计模式 保证一个类在使用过程中,只有一个实例.优势就是他的作用,这个类永远只有一个实例. 优势:这个类永远只有一个实例,占用内存少,有利于Java垃圾回收. 单例设计模式关键点 私有的构造方法. ...
- Java笔记(十一)……单例设计模式
设计模式 解决某一类问题最行之有效的方法 Java中有23中设计模式 单例设计模式 解决一个类在内存中只存在一个对象 思路 将构造函数私有化 在类中创建一个本类对象 提供一个方法可以获取到对象 两种方 ...
- Java面向对象_单例设计模式
单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点 1.构造方法私有化 2.声明一个本类对象 3.给外部提供一个静态方法获取对象实例 两种实现方式:饿汉式和懒汉式 何种情况下使用呢?当 ...
- java设计模式之单例设计模式和多例设计模式
单例设计模式:构造方法私有化,在类的内部定义static属性和方法,利用static方法来取得本类的实例化对象:无论外部产生多少个实例化对象,本质上只有一个实例化对象 饿汉式单例设计 class Si ...
- Java设计模式之单例设计模式总结
package singleton; /**单例设计模式 饿汉式 * * @author gx *这种方式基于classloder机制避免了多线程的同步问题,不过,instance在类装载时就实例化, ...
- 二·、spring成长之路——委派设计模式和单例设计模式
3.委派设计模式 设计思想:就是多个类去完成一项的工作,其中一个类去分发任务,其他类做具体的任务,而具体表现是这个委派类的工作,具体过程是被委派类来操作的 [ITask.java]定义工作的统一标准 ...
随机推荐
- MySQL高可用MHA实战
MySQL高可用架构MHA介绍 简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职 ...
- winform 如何正确的获取窗体的标题栏高度
最近我需要知道鼠标在一个控件里的相对位置,鼠标相对于屏幕的位置我是可以知道的,所以只要得到控件相对于屏幕的位置,就可以算出鼠标相对于控件的位置了 但是发现有误差 后来经过测试是由于窗体的标题栏高度导致 ...
- c# 程序调用cmd执行命令如SVN.exe
c# 程序调用cmd执行命令如SVN.exe string str = Console.ReadLine(); System.Diagnostics.Process p = new System.Di ...
- Nginx配置之基于域名的虚拟主机
1.配置好DNS解析 大家好,今天我给大家讲解下在Linux系统下DNS服务器的基本架设,正向解析,反向解析,负载均衡,还有从域以及一个服务器两个域或者多个域的情况. 实验环境介绍:1.RHEL5.1 ...
- Apache htdigest命令
一.简介 htdigest命令是Apache的Web服务器内置工具,用于创建和更新储存用户名.域和用于摘要认证的密码文件.服务器上的资源可以被限制为仅允许由htdigest建立的文件中的用户访问.使用 ...
- 10、差异基因topGO富集
参考:http://www.biotrainee.com/thread-558-1-1.html http://bioconductor.org/packages/3.7/bioc/ http://w ...
- python日期,时间函数
获取当前格式化时间: now_time = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) 获取当前时间戳: now_tim ...
- Django框架 之 查询 Extra
Django框架 之 查询 Extra extra 1 2 extra(select=None, where=None, params=None, tables=None, order_b ...
- zigbee之MAC地址发送
TI cc2530在出厂时候每一个芯片都固化了一个唯一的8个字节的地址,MAC或者IEEE地址. 协调器模块的MAC地址为:0x00124B000716550F(注意自己的是多少!!) 终端的MAC地 ...
- 对C#泛型讲的很好的一篇文章
请参考 https://www.cnblogs.com/kissdodog/archive/2013/01/27/2879185.html