一、基础概念

  (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设计模式之单例设计模式 入门实例的更多相关文章

  1. java软件设计模式只单例设计模式

    概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计 ...

  2. Java学习笔记——单例设计模式Singleton

    单例设计模式:singleton 解决的问题: 确保程序在运行过程中,某个类的实例instance只有一份. 特点: 1 构造函数私有化 2 自己内部声明自己 3 提供一个public方法,负责实例化 ...

  3. Java中常用来处理时间的三个类:Date、Calendar、SimpleDateFormate,以及Java中的单例设计模式:懒汉式、饿汉式以及静态内部类式

    (一)java.util.Date类 1.该类有一个long类型的属性:用来存放时间,是用毫秒数的形式表示,开始的日期是从1970年1月1号 00:00:00.    2.该类的很多方法都已经过时,不 ...

  4. java设计模式之单例设计模式

    单例设计模式 保证一个类在使用过程中,只有一个实例.优势就是他的作用,这个类永远只有一个实例. 优势:这个类永远只有一个实例,占用内存少,有利于Java垃圾回收. 单例设计模式关键点 私有的构造方法. ...

  5. Java笔记(十一)……单例设计模式

    设计模式 解决某一类问题最行之有效的方法 Java中有23中设计模式 单例设计模式 解决一个类在内存中只存在一个对象 思路 将构造函数私有化 在类中创建一个本类对象 提供一个方法可以获取到对象 两种方 ...

  6. Java面向对象_单例设计模式

    单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点 1.构造方法私有化 2.声明一个本类对象 3.给外部提供一个静态方法获取对象实例 两种实现方式:饿汉式和懒汉式 何种情况下使用呢?当 ...

  7. java设计模式之单例设计模式和多例设计模式

    单例设计模式:构造方法私有化,在类的内部定义static属性和方法,利用static方法来取得本类的实例化对象:无论外部产生多少个实例化对象,本质上只有一个实例化对象 饿汉式单例设计 class Si ...

  8. Java设计模式之单例设计模式总结

    package singleton; /**单例设计模式 饿汉式 * * @author gx *这种方式基于classloder机制避免了多线程的同步问题,不过,instance在类装载时就实例化, ...

  9. 二·、spring成长之路——委派设计模式和单例设计模式

    3.委派设计模式 设计思想:就是多个类去完成一项的工作,其中一个类去分发任务,其他类做具体的任务,而具体表现是这个委派类的工作,具体过程是被委派类来操作的 [ITask.java]定义工作的统一标准 ...

随机推荐

  1. oracle数据库中函数的递归调用

    如有下面的表结构AAAA,用一个字段prev_id表示记录的先后顺序,要对其排序,需要用的递归函数 ID PREV_ID CONT 99   a 23 54 d 21 23 e 54 33 c 33 ...

  2. Java面向对象-对象的多态性

    Java面向对象-对象的多态性 Java中的多态性表现: 1,方法的重载和重写(覆盖): 2,可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现: 我们先搞个父类Animal: ...

  3. Java微信公众平台开发(十一)--开发中微信公众平台/开放平台/商户平台的关联

    转自:http://www.cuiyongzhi.com/post/55.html 微信公众平台(map.weixin.qq.com)/开放平台(open.weixin.qq.com)/商户平台(pa ...

  4. Mycat实战之数据迁移(oracle -- mysql)

    1.案例场景: Mycat 后面接一个 Oracle 实例与一个 MySQL 实例,假设用户表,订单表,转账记录表, Oracle 字符集为 GBK 的,MySQL 字符集则要求 UTF8的 完成用户 ...

  5. MYCAT实战之分片迁移

    实践扩容 1.要求: travelrecord 表定义为10个分片,尝试将10个分片中的 2 个分片转移到第二台MySQL上, 并完成记录要求,最快的数据迁移做法,中断业务时间最短 2.针对分片以及迁 ...

  6. UIWidget

    [UIWidget] UIWidget在NGUI中的层次如下. 根据上篇所述,UIRect实现实现了Anchor功能.而Widget提供的功能也很简单,如下: 可以看到,widget只提供四个属性,a ...

  7. jquery与原生js比较

    以选择符为例,类似于这种 $(".class") 方式,在ie里面,肯定比$("#id") 低很多,而对于chrome和firefox,则因为提供了getEle ...

  8. [luogu3369]普通平衡树(fhq-treap模板)

    解题关键:无旋treap模板. #include<iostream> #include<cstdio> #include<cstring> #include< ...

  9. iframe 模拟ajax文件上传and formdata ajax 文件上传

    对于文件上传 有好多种方式,一直想总结 文件上传的方法 今天就来写下 iframe  的文件上传的代码 本人语言表达能里有限,不多说了 直接上代码. 首先看 总体页面. 总共就三个文件. 实际上也就是 ...

  10. 【摘自大型网站技术架构书】负载均衡时session如何共享

    由于负载均衡服务器可能会将请求分发到集群任何一台服务器上,所以保证每次请求能够获得正确的session比单机时复杂. 集群环境下,session管理的主要几种手段 1.session复制 sessio ...