java设计模式之——享元模式

         享元模式十分容易理解,说白了就是“共用对象”,何谓共用对象呢?比如大家都需要使用一个共同的数据,那就为这个共同的数据专门创建一个对象,然后大家都去调用该对象就行了,而没必要为每个调用者都创建这样一个对象。

         那为何要共用对象呢?众所周知,创建一个对象所需要的“花费”是十分高的,所以能少创建就少创建。

         比如数据库连接所需要花费的系统消耗非常大,用户操作一次数据库就要接连一次数据库的话,浪费的时间就太多了。这时候“数据库连接池”这个东西出现了,数据库连接池就是用的享元模式,数据库连接池的大概思想是:一次性地创建N条数据库连接存到连接池里,然后在用户需要使用连接时,就返回一条空闲连接给用户,并将返回的连接标志为“忙”,若些时没有“空闲”的连接了,那系统就会再创建一些连接到连接池里供用户使用,在用户使用完连接后,会释放连接,即把该连接重新标志为“空闲”,以便下次使用。

      下面是数据库连接池实现的简单例子,只实现了简单的数据库连接对象的创建和存到连接池,以及返回空闲连接给用户这两个功能。其它功能并没有实现

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 * 连接管理器
 * @author Administrator
 *
 */
class ConnectionManager
{
	// 定义一个线程池
	private List<Connection> connections = new ArrayList<Connection>();
	// 用户要连接时,获取的线程池的索引号
	private int gettingConn = 0;

	/**
	 * 从连接池中返回一条连接
	 * @param url
	 * @param userName
	 * @param password
	 * @return
	 */
	public Connection getConnection(String url, String userName, String password)
	{
		try
		{
			Class.forName("oracle.jdbc.driver.OracleDriver");
			//初始化线程池
			if (0 == connections.size())
			{
				for (int i = 0; i < 50; i++)
				{
					Connection conn = DriverManager.getConnection(url,
							userName, password);
					connections.add(conn);
				}
			}

			// 返回连接池中的线程
			return connections.get(gettingConn++);
		} catch (ClassNotFoundException e)
		{
			e.printStackTrace();
		} catch (SQLException e)
		{
			e.printStackTrace();
		}
		return null;
	}
}



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值