首先何为单利模式:

单利模式即多次调用同一个对象的时候,只有一个实例(这里所谓的实例就是,假如创建了两个对象,它们的hashCode相同)

下面是相关代码:

1 创建一个对象Singleton类

package Singleton;

public class Singleton {

}

  

2 我们进行测试:

package Singleton;

public class SingletonTest {
public static void main(String[] args) {
Singleton s1=new Singleton();
Singleton s2=new Singleton();
if(s1.hashCode()==s2.hashCode()){
System.out.println("同一个实例");
}else{
System.out.println("不是同一个实例");
}
} }

运行结果:不是同一个实例

下面是同一个实例的代码:

package Singleton;

public class Singleton2 {
private Singleton2() {
} private static Singleton2 instance = new Singleton2(); public Singleton2 getInstance() {
return instance;
} public void setInstance(Singleton2 instance) {
this.instance = instance;
}
}

  

package Singleton;

public class SingletonTest2 {
public static void main(String[] args) {
Singleton2 s1 = Singleton2.instance;
Singleton2 s2 = Singleton2.instance;
if (s1.hashCode() == s2.hashCode()) {
System.out.println("同一个实例");
} else {
System.out.println("不是同一个实例");
}
}
}

  

运行结果:同一个实例

所以说,为何单利模式中构造方法为何是private 修饰的,就是上面这个原因。

单利模式分为饿汉式和懒汉式,上面的案例即为饿汉式:private static Singleton2 instance =new Singleton2(); 饿汉模式中我们虽然用private 修饰,但是还有个static 修饰,即一创建Singleton2这个类就加载这个方法,这就是区分懒汉和饿汉的区别

当然懒汉式是下面这种形式:

package Singleton;

public class Singleton2 {
private Singleton2() {
} static Singleton2 instance; public Singleton2 getInstance() {
if (null != instance) {
instance = new Singleton2();
}
return instance;
} public void setInstance(Singleton2 instance) {
this.instance = instance;
}
}

  

可以理解为不是那么饿,啥时候想吃啥时候吃

第一篇写完了,写的很基础,也不好,希望自己能坚持下去

java 单利模式的更多相关文章

  1. java 单利模式设计原理,饿汉式懒汉式,开发中推荐饿汉式

    单例模式的设计:  1 //Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象. //对象是方法被调用时,才初始化,也叫做对象的延时加载.成为:懒汉式. //Si ...

  2. Java中的单利模式介绍

    单利模式:本来是不准备写的,但是最近发现好多公司面试时都会或多或少的提到单利模式,因此今天把单利模式拉出来说说. 定义:只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且 ...

  3. Java 设计模式之单利模式

    一.首先介绍一下单例模式:     单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在.许多时候整个系统只需要拥有一个的全局 ...

  4. Java设计模式之单利模式(Singleton)

    单利模式的应用场景: 单利模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例.并提供一个全局反访问点.单利模式是创建型模式.单利模式在生活中应用也很广泛,比如公司C ...

  5. Java中的单利模式

    单利模式 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创 ...

  6. java 开发中经常问到得懒汉模式 (单利模式)

    //懒汉模式 class Single { public static Single s = null; public Single (){} public static Single getInst ...

  7. java 设计模式之单利模式以及代理模式(静态)

    1:单利模式: public class Singleton { private static Singleton uniqueInstance = null; private Singleton() ...

  8. Java设计模式の单利模式

    单利模式:确保一个类最多只有一个实例,并提供一个全局访问点. 经典单利模式创建对象代码 public class Singleton { private static Singleton unique ...

  9. 《JAVA与模式》之观察者模式

    转自:http://www.cnblogs.com/java-my-life/archive/2012/05/16/2502279.html 在阎宏博士的<JAVA与模式>一书中开头是这样 ...

随机推荐

  1. 开始学java痛苦之旅开启 12-31日 第一章节笔记

    1.JDK,Java development kit,开发环境(JDK)2.JRE 是Java运行环境 (Java Runtime Enviroment) 的缩写 我的电脑--属性--工具--文件夹选 ...

  2. 如何在HTML中加载Flash(2种实现方法)_HTML/Xhtml_网页制作

    点评:如何在HTML中加载Flash,为网页添加更多的色彩,普通的网页以无法满足用户的需求,接下来为大家介绍下2种在HTML中加载Flash的方法,感兴趣的各位可以适当参考下,希望对你有所帮助 第一种 ...

  3. ajax实现jsonp跨域接口

    HTML页面代码: <script type="text/javascript"> function UrlSearch(){ var name,value; var ...

  4. 关于CMFCPropertyGridFontProperty的赋值问题

    CMFCPropertyGridFontProperty是派生于CMFCPropertyGridProperty类的用于字体设置的类.它可以设置字体的名称.大小.粗细等各项参数.但是类并不提供用于初始 ...

  5. Linux Svn 安装过程及配置

    重要的是第一步的安装,第二步配置可能没用,但是没试过,因为服务器上已经安装了第一步. 此处的第二步只为做个记录,说明一下里边的配置文件的用途. 3. 自己实际操作中的的配置记录(参照服务器别人的配置记 ...

  6. JSP开发模式1(简单注册功能)

    ———————————————————————————————————————————————— import java.util.regex.Matcher;import java.util.reg ...

  7. JSP计算器

    <%@ page language= "java" contentType="text/html;charset=UTF-8" %><html ...

  8. SeekBar 圆角问题

    用图片做背景色,最后处理成.9.png的.用普通png图片做背景,则两边会有圆角出现,原因是图片不适合SeekBar尺寸,因而被拉伸或压缩,从而产生圆角. <?xml version=" ...

  9. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用spring framework的IoC容器功能----->方法一:使用XML文件定义beans之间的依赖注入关系

    XML-based configuration metadata(使用XML文件定义beans之间的依赖注入关系) 第一部分 编程思路概述 step1,在XML文件中定义各个bean之间的依赖关系. ...

  10. javax/javaee-api/ Maven依赖

    <dependency>    <groupId>javax</groupId>    <artifactId>javaee-api</artif ...