文档章节

JAVA中设计模式之 -- 单例模式

lovedvd
 lovedvd
发布于 2017/07/08 23:32
字数 495
阅读 2
收藏 0

单例模式中分为饿汉模式、懒汉模式两种

一.创建饿汉模式单例 package com.yiyun; /**

  • 单例模式Singleton
  • 应用场合:有些对象只需要一个就足够了,如古代的皇帝、老婆
  • 作用:保证整个应用程序中某个实例有且只有一个
  • 类型:饿汉模式、懒汉模式

*本类单例是饿汉模式,它是线程安全的,在类加载的时候就已经创建对象了 */

public class Singleton {

//1.将构造方法私有化,不允许外部直接创建对象

private Singleton() {
	
}

//2.创建类的唯一实例,使用pirvate static修饰 不让外部直接访问类的成员

    private static Singleton instance = new Singleton();

    //3.提供一个用于获取实例的方法 使用public static修饰对外提供服务

    public static Singleton getInstance() {
	      return instance;
}

}

二.创建懒汉模式单例

package com.yiyun; /**

  • 单例模式中的
  • 懒汉模式
  • 区别:饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全
  •  懒汉模式的特点是加载类时比较快,但第一次运行时获取对象的速度比较慢,线程不安全
    

*/

public class Singleton2 {

     //1.将构造方法私有化,不允许外部直接创建对象

	private Singleton2() {
		
	}

     //2.创建类的唯一实例,使用pirvate static修饰 不让外部直接访问类的成员

        private static Singleton2 instance;

    //3.提供一个用于获取实例的方法 使用public static修饰对外提供服务

    public static Singleton2 getInstance() {

    	if (instance == null) {

    		instance = new Singleton2();

		}

    	return instance;

	}

}

三.测试类

package com.yiyun; public class Test {

public static void main(String[] args) {

	//饿汉模式
	Singleton singleton = Singleton.getInstance();
	Singleton singleton1 = Singleton.getInstance();
	
	if (singleton == singleton1) {
		System.out.println("singletor与singletor1是同一个实例");
	}else{
		System.out.println("singletor与singletor1不是同一个实例");
	}
	
	//懒汉模式
	Singleton2 s3 = Singleton2.getInstance();
	Singleton2 s4 = Singleton2.getInstance();
	if (s3 == s4) {
		System.out.println("s3 与 s4 是同一个实例");
	}else{
		System.out.println("s3 与 s4 不是同一个实例");
	}

}

}

© 著作权归作者所有

上一篇: eclipse快捷键
下一篇: Mongodb的安装
lovedvd
粉丝 0
博文 4
码字总数 4352
作品 0
程序员
私信 提问
设计模式15——Template Method设计模式

Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下: 以文档处理为例,T...

小米米儿小
2014/01/24
222
0
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
296
0
简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

转载:原地址http://www.cnblogs.com/zhangchenliang/p/3700820.html 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别 结合简单示例和UML图,讲解工厂模式简单原理。 一、引子 话说...

法斗斗
2018/05/08
293
0
策略模式与SPI机制,到底有什么不同?

这里说的策略模式是一种设计模式,经常用于有多种分支情况的程序设计中。例如我们去掉水果皮,一般来说对于不同的水果,会有不同的拨皮方式。此时用程序语言来表示是这样的: 如上面代码所写...

陈树义
2018/09/03
0
0
学了那么多年设计模式依然不会用!那可真蠢!

什么是设计模式? 设计模式(Design Pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决...

GitChat技术杂谈
2018/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MongoDB系列-解决面试中可能遇到的MongoDB复制集(replica set)问题

关注我,可以获取最新知识、经典面试题以及微服务技术分享   MongoDB复制集(replica set):MongoDB复制集维护相同数据集的一组mongod进程,复制集是生产部署的基础,具有数据冗余以及高可用...

ccww_
32分钟前
4
0
SpringBoot系列:Spring Boot集成Spring Cache,使用RedisCache

前面的章节,讲解了Spring Boot集成Spring Cache,Spring Cache已经完成了多种Cache的实现,包括EhCache、RedisCache、ConcurrentMapCache等。 这一节我们来看看Spring Cache使用RedisCache。...

杨小格子
41分钟前
3
0
OpenJDK之CountDownLatch

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CountDownLatch是Doug Lea在JDK1.5中引入的,作用就不详细描述了, await()方法,如果还有线程在执行,那么当前线程...

克虏伯
47分钟前
4
0
简单编程

1.编写一个程序,提示用户输入名和姓,然后以“名,姓”的格式打印出来。 #include<stdio.h>int main(){char name[3];char family[3];printf("Please input your name and family:\n...

电子工程197沈志初
51分钟前
4
0
详解Mysql分布式事务XA(跨数据库事务)

在开发中,为了降低单点压力,通常会根据业务情况进行分表分库,将表分布在不同的库中(库可能分布在不同的机器上)。在这种场景下,事务的提交会变得相对复杂,因为多个节点(库)的存在,可...

slagga
56分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部