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]定义工作的统一标准 ...
随机推荐
- oracle数据库中函数的递归调用
如有下面的表结构AAAA,用一个字段prev_id表示记录的先后顺序,要对其排序,需要用的递归函数 ID PREV_ID CONT 99 a 23 54 d 21 23 e 54 33 c 33 ...
- Java面向对象-对象的多态性
Java面向对象-对象的多态性 Java中的多态性表现: 1,方法的重载和重写(覆盖): 2,可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现: 我们先搞个父类Animal: ...
- Java微信公众平台开发(十一)--开发中微信公众平台/开放平台/商户平台的关联
转自:http://www.cuiyongzhi.com/post/55.html 微信公众平台(map.weixin.qq.com)/开放平台(open.weixin.qq.com)/商户平台(pa ...
- Mycat实战之数据迁移(oracle -- mysql)
1.案例场景: Mycat 后面接一个 Oracle 实例与一个 MySQL 实例,假设用户表,订单表,转账记录表, Oracle 字符集为 GBK 的,MySQL 字符集则要求 UTF8的 完成用户 ...
- MYCAT实战之分片迁移
实践扩容 1.要求: travelrecord 表定义为10个分片,尝试将10个分片中的 2 个分片转移到第二台MySQL上, 并完成记录要求,最快的数据迁移做法,中断业务时间最短 2.针对分片以及迁 ...
- UIWidget
[UIWidget] UIWidget在NGUI中的层次如下. 根据上篇所述,UIRect实现实现了Anchor功能.而Widget提供的功能也很简单,如下: 可以看到,widget只提供四个属性,a ...
- jquery与原生js比较
以选择符为例,类似于这种 $(".class") 方式,在ie里面,肯定比$("#id") 低很多,而对于chrome和firefox,则因为提供了getEle ...
- [luogu3369]普通平衡树(fhq-treap模板)
解题关键:无旋treap模板. #include<iostream> #include<cstdio> #include<cstring> #include< ...
- iframe 模拟ajax文件上传and formdata ajax 文件上传
对于文件上传 有好多种方式,一直想总结 文件上传的方法 今天就来写下 iframe 的文件上传的代码 本人语言表达能里有限,不多说了 直接上代码. 首先看 总体页面. 总共就三个文件. 实际上也就是 ...
- 【摘自大型网站技术架构书】负载均衡时session如何共享
由于负载均衡服务器可能会将请求分发到集群任何一台服务器上,所以保证每次请求能够获得正确的session比单机时复杂. 集群环境下,session管理的主要几种手段 1.session复制 sessio ...