简单理解设计模式之单例模式
来源:互联网 发布:钢材进销存软件免费版 编辑:程序博客网 时间:2024/06/05 19:23
1.什么是单例模式?我们为什么要用单例模式?
首先我们要知道我们为什么要用单例模式,其实在很多的时候我们都用到了单例模式,这也是很经常要用到的,比如一个对象我们只需要它实例化一次,不允许它任意的创建。其实这就是单例模式,就是我们要一个对象只实例化一次,比如数据库的连接。。
2.单例模式有哪些?
单例模式分为两种:一种是懒汉模式,另一种是饿汉模式。
3.怎么创建懒汉模式的单例模式
步骤如下:
第一步:实例化该类的构造函数,
第二步:私有静态化实例对象,保证只在本类执行
第三步:返回一个共有的函数,返回该实例对象
懒汉模式跟饿汉模式的根本区别就是是否先创建对象实例,如果先创建就是懒汉模式,要用到的时候再创建就是饿汉模式
懒汉模式代码如下:
package com.hibernate.test01.dao.pojo;public class OneExample {//保证类私有,不允许外部创建对象private OneExample(){}//保证类只在本类中执行private static OneExample oneExample = new OneExample();//返回一个共有的方法,返回改类的实例化对象public static OneExample getOneExceptionInstance(){return oneExample;}}
饿汉模式代码如下:
package com.hibernate.test01.dao.pojo;//饿汉模式单例模式public class OneExample {//保证类私有,不允许外部创建对象private OneExample(){}//保证类只在本类中执行,先不实例化对象private static OneExample oneExample;//返回一个共有的方法,返回改类的实例化对象public static OneExample getOneExceptionInstance(){if(oneExample==null){oneExample = new OneExample();return oneExample;}else{return oneExample;}}下面怎么获取hibernate框架中的SessionFactory的单例:
package com.hibernate.test01;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;public class HibernateSessionFactory {private static SessionFactory sessionFactory;private HibernateSessionFactory(){}public static SessionFactory getSessionFactory(){if(sessionFactory!=null){return sessionFactory;}else{Configuration config = new Configuration().configure();ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();sessionFactory = config.buildSessionFactory(serviceRegistry);return sessionFactory;}}}
需要注意的是这些都不是线程安全的,在多线程下访问会出现跟我们期望的值不相等,后面我会再介绍。
0 0
- 简单理解设计模式之单例模式
- 设计模式理解之单例模式
- 设计模式之简单工厂模式与单例模式
- 设计模式之简单单例设计模式
- 设计模式GOF23之单例模式理解
- 大白话之设计模式--单例模式理解记忆
- 我理解的java设计模式之单例模式
- 设计模式 之 单例模式简单例子(Java)
- 23种设计模式简单概述之单例模式
- PHP设计模式之单例模式简单代码介绍
- 简单理解单例模式
- 设计模式之观察者模式简单理解
- 简单理解设计模式之策略模式
- 简单理解设计模式之外观模式
- 简单理解设计模式之工厂模式
- 简单理解设计模式之观察者模式
- 简单理解设计模式之原型模式
- 设计模式之 单例设计模式
- 怎样理解Servlet的单实例多线程
- Android ORM框架介绍之greenDao注解及加密(三)
- mysql binlog 常用的命令
- poj 2046
- 100天土鸡饲养计划(34)
- 简单理解设计模式之单例模式
- 微信支付申请流程
- ButterKnife
- 【文本】数据格式——JSON
- Android常用动画总结
- HTTP
- notepad背景颜色设置
- 谷歌地球API开发者指南(高级)
- 优雅的多击事件处理