博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
包装类
阅读量:5745 次
发布时间:2019-06-18

本文共 2494 字,大约阅读时间需要 8 分钟。

实现了javax.sql.DataSource的才是标准的数据库连接池,按照字面意思,一般称之为数据源。

对于一个已知类的某个方法进行功能上的改变有以下三种方式:
1、定义子类,扩展父类的某个功能。(此处行不通)

2、利用包装设计模式改写原有的类的功能
a、编写一个类实现与被改写类(com.mysql.jdbc.Connection)相同的接口
b、定义一个引用,记住被改写类的实例
c、定义构造方法,传入被改写类的实例
d、对于要改写的方法,改写即可
e、对于不需要改写的方法,调用原有的对象的对应方法

针对已经实现的类进行改写它的方法。

*****包装设计模式
*****默认适配器设计模式

上一篇介绍动态代理模式

 

 

 

 

1 package cn.itcast.jdbc.pool; 2  3 import java.io.InputStream; 4 import java.sql.Connection; 5 import java.sql.DriverManager; 6 import java.util.LinkedList; 7 import java.util.Properties; 8  9 import cn.itcast.util.JdbcUtil;10 //数据库连接池的原理11 public class SimpleConnectionPool {12     private static String driverClassName;13     private static String url;14     private static String user;15     private static String password;16     private static LinkedList
pool = new LinkedList
();//存储连接的池17 static{18 try {19 InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");20 Properties props = new Properties();21 props.load(in);22 driverClassName = props.getProperty("driverClassName");23 url = props.getProperty("url");24 user = props.getProperty("user");25 password = props.getProperty("password");26 Class.forName(driverClassName);27 28 //初始化10个连接到池中29 for(int i=0;i<10;i++){30 Connection conn = DriverManager.getConnection(url, user, password);31 pool.add(conn);32 }33 // System.out.println("初始化的连接有:");34 // for(Connection c:pool)35 // System.out.println(c);36 } catch (Exception e) {37 e.printStackTrace();38 }39 }40 public synchronized static Connection getConnection(){41 if(pool.size()>0){42 Connection conn = pool.remove();//从池中拿到连接,并从池中删除掉43 44 // System.out.println("取出的是:"+conn);45 // System.out.println("池中还有:");46 // for(Connection c:pool)47 // System.out.println(c);48 return conn;49 }else{50 System.out.println("对不起!服务器真忙");51 return null;52 }53 }54 public static void release(Connection conn){
//把连接放回池中55 pool.add(conn);56 // System.out.println("回来的是:" +conn);57 // System.out.println("回来后池中的连接:");58 // for(Connection c:pool)59 // System.out.println(c);60 }61 }

 

转载地址:http://ztnzx.baihongyu.com/

你可能感兴趣的文章
文件服务器之Branchcache托管式缓存
查看>>
Nagios监控Oracle表空间出现Cannot determine ORACLE_HOME报错
查看>>
一个小时学会Maven
查看>>
Oracle数据库通过DBLINK实现远程访问
查看>>
深入学习
查看>>
【网摘】ActiveX组件及其注册
查看>>
虚拟机VMware8安装Mac系统,VMware_tools安装以及vm共享文件夹的设置
查看>>
提高OCR质量的技巧之区域未正确检测
查看>>
2n字符
查看>>
java集合框架之Set
查看>>
2018 ACM-ICPC 沈阳网络赛 I. Lattice's basics in digital electronics[模拟+bitwise trie]
查看>>
Photography theory: a beginner's guide(telegraph.co.uk)
查看>>
每天进步一点----- MediaPlayer
查看>>
phpstudy无法访问主页,提示You don't have permission to access / on this server解决办法
查看>>
初步了解JDBC
查看>>
如何区别硬连接和软连接
查看>>
Python excel 画图
查看>>
JSPatch使用小记
查看>>
我的友情链接
查看>>
选择 Palo Alto 防火墙十大理由(四)
查看>>