【Java】【TIJ】让类的对象个数受控于我们——实现类对象个数的限制

原创 2014年10月07日 17:52:51

下面介绍一个限制类对象个数的例子:

创建一个名为ConnectionManager的类,该类管理一个元素为Connection对象的固定数组。客户端程序员不能直接创建Connection对象,而只能通过ConnectionManager中的某个static的方法来获取它们。当ConnectionManager之中不再有对象时,它会返回null引用。在main()之中检测这些类。

/**
* Thinking in Java test 6.8(限制类对象个数)
* @author:WolfOfSiberian
* @email:QuietWolf@yeah.net
*/
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

public class ConnectionManager{
        //最大连接数
	private static final int connMax = 10;
	//Connection对象静态数组
	private static Connection connArray[] = new Connection[connMax];
	//当前使用的连接数
	private static int countUse = 0;

	private ConnectionManager(){
		//
	}

	/**
	*  获取Connection对象
	*/
	public static Connection getConnection()throws Exception{
		if(countUse >= connMax){
			System.out.println("Sorry,There is no Connection Object for you to use!");

			return null;
		}
		else{
                        Class.forName("com.mysql.jdbc.Driver").newInstance();//加载连接MySQL数据库的驱动程序
		        connArray[countUse] = DriverManager.getConnection("jdbc:mysql://localhost/test?"+"user=root&password=sine88");//获取连接对象Connection
		       
			countUse++;//使用连接数加一,可用的连接数却少了一个
			System.out.println("这是第"+countUse+"个Connection");

		    	return connArray[countUse-1];
		}

	}
	
	/**
	* 释放Connection对象
	*/
	public static void freeConnection()throws Exception{
		for(int i=0;i<countUse;i++){
			connArray[i].close();
			connArray[i] = null;
		}
	}
	//main入口
	public static void main(String[] args)throws Exception{
		for(int i=0;i<11;i++){
			Connection conn = ConnectionManager.getConnection();
		}
		ConnectionManager.freeConnection();
	}
}


运行结果

针对本类实现的Connection对象的回收存在的缺陷,作者重新实现了一个完善版本http://blog.csdn.net/wolfofsiberian/article/details/39889093

F:\01 Java\01 Project\01 TinkingInJava>java ConnectionManager
这是第1个Connection
这是第2个Connection
这是第3个Connection
这是第4个Connection
这是第5个Connection
这是第6个Connection
这是第7个Connection
这是第8个Connection
这是第9个Connection
这是第10个Connection
Sorry,There is no Connection Object for you to use!

【Java】【TIJ】让类的对象个数受控于我们——实现类对象个数的限制(完善版)

【Java】【TIJ】让类的对象个数受控于我们——实现类对象个数的限制(完善版)...

【Java】【TIJ】实现一个类:不允许用构造方法来直接创建类实例(对象)

某些情况下,也许我们不希望客户使用

C++如何实现类对象只能动态分配或只能静态分配

C++如何实现类对象只能动态分配或只能静态分配 C++中建立类的对象有两种方式: (1)静态建立,例如 A a;      静态建立一个类对象,就是由编译器为对象在栈空间中分配内存。使用这种方法,...

使用DAO工厂创建实现类对象

首先分析DAO模式中的每一部分 VO(对象实体):这个类成员变量与数据库中每个字段一一对应,同时提供了相应是set和get方法来设置或取得数值。这个类一般是通过IDE自动生成的 D...

Java多态性详解——父类引用子类对象

面向对象编程有三个特征,即封装、继承和多态。   封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。   继承是为了重用父类代码,同时为实现多态性作准备。...

黑马程序员_Java多态性详解——父类引用子类对象

----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ---------------------  面向对象编程有三个特征,即封装...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java】【TIJ】让类的对象个数受控于我们——实现类对象个数的限制
举报原因:
原因补充:

(最多只允许输入30个字)