当前位置: 首页 > news >正文

设计模式--享元模式

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

享元模式(flyweight):

主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。

示例:

连接池(享元模式)ConnectionPool.java

/**
 * 连接池(享元模式)
 *
 * @author Kevin
 * @date 2016-3-15
 */
public class ConnectionPool {

	private static ConnectionPool instance = null;

	/* 连接池 */
	private List<Connection> pool;

	/*公有属性*/
	private String url = "jdbc:mysql://localhost:3306/test";
	private String username = "root";
	private String password = "root";
	private String driverClassName = "com.mysql.jdbc.Driver";

	private int poolSize = 100;
	private Connection conn = null;

	/**
	 *	私有构造方法,做一些初始化工作
	 *
	 * @author Kevin
	 */
	private ConnectionPool() {
		List<Connection> connectionList = new ArrayList<Connection>(poolSize);
		pool = Collections.synchronizedList(connectionList);

		for (int i = 0; i < poolSize; i++) {
			try {
				Class.forName(driverClassName);
				conn = DriverManager.getConnection(url, username, password);
				pool.add(conn);
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 返回连接到连接池
	 *
	 * @author Kevin
	 */
	public synchronized void release() {
		pool.add(conn);
	}

	/**
	 * 获取连接池中的一个数据库连接
	 *
	 * @author Kevin
	 */
	public synchronized Connection getConnection() {
		if (pool.size() > 0) {
			Connection conn = pool.get(0);
			pool.remove(conn);
			return conn;
		} else {
			return null;
		}
	}

}

转载于:https://my.oschina.net/zhaokaiju/blog/654932

相关文章:

  • KVO 键值观察者
  • 复制含有随机指针节点的链表
  • Android 文件式数据库Realm
  • mobAndroid免费验证短信
  • 【css3】浏览器内核及其兼容性
  • 一个苹果开发者的苹果表体验报告
  • 责任链模式
  • C 数据结构与算法系列 插入排序
  • spring-001-Ioc 顶层容器
  • Android自动化测试之Monkeyrunner使用方法及实例
  • 【案例】slave_net_timeout 问题一则
  • Node+Express+node-mysql 实战于演习 全套mysql(增删改查)
  • 我与mongodb 二三事(2)
  • 失眠的症状是什么
  • 20145222黄亚奇《Java程序设计》实验二实验报告
  • Asm.js的简单介绍
  • iOS编译提示和导航提示
  • Object.assign方法不能实现深复制
  • php中curl和soap方式请求服务超时问题
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Sass Day-01
  • SOFAMosn配置模型
  • Vue 2.3、2.4 知识点小结
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 多线程事务回滚
  • 机器学习中为什么要做归一化normalization
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 前端技术周刊 2019-01-14:客户端存储
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 数据可视化之 Sankey 桑基图的实现
  • 我有几个粽子,和一个故事
  • 小程序button引导用户授权
  • 怎样选择前端框架
  • 正则学习笔记
  • - 转 Ext2.0 form使用实例
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 数据库巡检项
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​什么是bug?bug的源头在哪里?
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (1)虚拟机的安装与使用,linux系统安装
  • (145)光线追踪距离场柔和阴影
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Oracle)SQL优化技巧(一):分页查询
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (ZT)薛涌:谈贫说富
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (五)MySQL的备份及恢复
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (已解决)vue+element-ui实现个人中心,仿照原神