当前位置:Gxlcms > 数据库问题 > jdbc_dbcp连接池和装饰者模式概述

jdbc_dbcp连接池和装饰者模式概述

时间:2021-07-01 10:21:17 帮助过:40人阅读

cn.code.demo; import java.sql.Connection; import java.sql.SQLException; import org.apache.commons.dbcp2.BasicDataSource; import org.junit.Test; /* * 数据库连接池 * 池参数: * 初始化大小:10个 * 最小空闲连接数:3个 * 增量:一次创建的最小单位 5个 * 最大空闲连接数 12个 * 最大连接数 20个 * 最大等待时间:1000毫秒 * 连接池也是用四大连接参数 * 实现的接口 * javax.sql.DataSource接口! * */ public class DBCPDemo1 { @Test public void fun1(){ /* * 1.创建连接池对象 * 2.配置四大参数 * 3.配置池参数 * 4.得到连接对象 * */ BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/mydb1"); dataSource.setUsername("root"); dataSource.setPassword("123"); dataSource.setMaxTotal(20); dataSource.setMaxWaitMillis(1000); dataSource.setMaxIdle(3); Connection con =null; try { con = dataSource.getConnection(); System.out.println(con.getClass().getName()); /* * 连接池内部使用四大参数创建了链接对象,即mysql驱动提供的Connection * 连接池使用mysql的链接对象进行了装饰,只对close()方法进行了增强 * 装饰之后的Connection close()方法,用来把当前链接归还给池(装饰者设计模式) * */ } catch (SQLException e) { throw new RuntimeException(e); }finally{ try { con.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
  1. <span style="color: #000000">装饰者模式:
  2. 对象增强的手段
  3. </span>*<span style="color: #000000">继承
  4. </span>*<span style="color: #000000">装饰者模式
  5. </span>*<span style="color: #000000">动态代理
  6. 被增强的对象可以切换
  7. 增强内容可以切换
  8. </span>---------------------<span style="color: #000000">
  9. 继承:
  10. 缺点:
  11. </span>1<span style="color: #000000">、增强的内容是死的,不能动
  12. </span>2<span style="color: #000000">、被增强的对象也是死的
  13. 使用继承回事类增多;
  14. </span><span style="color: #0000ff">class</span><span style="color: #000000"> 咖啡类{}
  15. </span><span style="color: #0000ff">class</span> 有糖咖啡 <span style="color: #0000ff">extends</span><span style="color: #000000"> 咖啡{}
  16. </span><span style="color: #0000ff">class</span> 加奶咖啡 <span style="color: #0000ff">extends</span><span style="color: #000000"> 咖啡{}
  17. </span><span style="color: #0000ff">class</span> 加盐咖啡 <span style="color: #0000ff">extends</span><span style="color: #000000"> 咖啡{}
  18. </span><span style="color: #0000ff">class</span> 加糖加奶 <span style="color: #0000ff">extends</span><span style="color: #000000"> 加奶{}
  19. </span>-------------------------------<span style="color: #000000">
  20. 装饰者模式:
  21. </span>1<span style="color: #000000">、增强的内容是死的
  22. </span>2<span style="color: #000000">、被增强的对象时任意的
  23. </span><span style="color: #0000ff">class</span><span style="color: #000000"> 咖啡类{}
  24. </span><span style="color: #0000ff">class</span> 有糖咖啡 <span style="color: #0000ff">extends</span><span style="color: #000000"> 咖啡{}
  25. </span><span style="color: #0000ff">class</span> 加奶咖啡 <span style="color: #0000ff">extends</span><span style="color: #000000"> 咖啡{}
  26. </span><span style="color: #0000ff">class</span> 加盐咖啡 <span style="color: #0000ff">extends</span><span style="color: #000000"> 咖啡{}
  27. 咖啡a </span>= <span style="color: #0000ff">new</span><span style="color: #000000"> 加糖();
  28. 咖啡 b </span>= <span style="color: #0000ff">new</span> 加盐(a);<span style="color: #008000">//</span><span style="color: #008000">对a进行装饰,就是给a加盐</span>
  29. 咖啡 c = <span style="color: #0000ff">new</span><span style="color: #000000"> 加奶(b);
  30. java io流中大量应用!、
  31. 四大家族:
  32. </span>1<span style="color: #000000">、字节:inputStream outputStream
  33. </span>2<span style="color: #000000">、字符:reader、writer
  34. InputStream
  35. FileInputStream:他是一个节点流,就是和一个资源绑定在一起的!文件
  36. BufferedInputStream : 他是装饰流,创建时必须给一个底层对象,然后我不管你给我的是什么流,我都会给你它添加缓冲区!
  37. </span><span style="color: #0000ff">new</span> BuferedInputStream(<span style="color: #0000ff">new</span> FileInputStream("c:/xxx.txt"<span style="color: #000000">));
  38. ObjectInputStream(</span><span style="color: #0000ff">new</span> BuferedInputStream(<span style="color: #0000ff">new</span> FileInputStream("c:/xxx.txt"<span style="color: #000000">)););
  39. ByteArrayInputStream(</span><span style="color: #0000ff">byte</span><span style="color: #000000">[] buf);
  40. GZIPIputStream();
  41. </span>--------------------<span style="color: #000000">
  42. 装饰用途:不知道被增强对象的具体类型时,可以使用!
  43. </span>1<span style="color: #000000">、是你还有你,一切拜托你!
  44. </span><span style="color: #0000ff">class</span> MyConnection <span style="color: #0000ff">implements</span><span style="color: #000000"> Connection{
  45. </span><span style="color: #0000ff">private</span><span style="color: #000000"> Connection con;
  46. </span><span style="color: #0000ff">public</span> MyConnection(Connection con ){<span style="color: #008000">//</span><span style="color: #008000">通过构造器传递底层对象</span>
  47. <span style="color: #0000ff">this</span>.con=<span style="color: #000000">con;
  48. }
  49. </span><span style="color: #008000">//</span><span style="color: #008000">一切拜托你</span>
  50. <span style="color: #0000ff">public</span><span style="color: #000000"> Statement createStatement(){
  51. </span><span style="color: #0000ff">return</span><span style="color: #000000"> con.createStatement();
  52. }
  53. </span><span style="color: #008000">//</span><span style="color: #008000">增强方法</span>
  54. <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> close(){
  55. 把当前链接归还给池!
  56. }
  57. }
  58. Connection con </span>=<span style="color: #000000"> 通过四大参数创建链接对象由mysql提供
  59. Connection con1 </span>= <span style="color: #0000ff">new</span><span style="color: #000000"> MyConnection(con);
  60. con1.close();</span>

jdbc_dbcp连接池和装饰者模式概述

标签:具体类   rate   mon   time   设计模式   class   puts   一起   color   

人气教程排行