日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

包装设计模式——

發布時間:2023/12/2 asp.net 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 包装设计模式—— 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先建立數據連接成(自己建立的)
/**
?* 存在必要性?
?* ?? ??? ?數據庫連接作為非常重要的資源 ,用完了要不要立即銷毀?----(不能立即關閉)
?* 不能立即關閉?誰維護
?* ?? ??? ??? ?---------------專門交給一個人來管理(池-----------池子中放了好多數據庫連接)
?*
?* 非常 有必要存在!!!
?* ?? ??? ??? ??? ?池子在java類中如何表現?--------------------集合--------(Connection)----用什么集合?
?*
?* List? 集合來模擬池
?* ?? ??? ??? ?1.初始化一些連接
?*
?* @author wangli
?*
?*/
public class MyDataSource1 {
?? ?private static? List<Connection> pool = new ArrayList<Connection>();//池子
?? ?private static int size=10;
?? ?public static void setSize(int size) {
?? ??? ?MyDataSource1.size = size;
?? ?}
?? ?
?? ?//初始化池中的連接
?? ?static{
?? ??? ?try {
?? ??? ??? ?for (int i = 0; i < size; i++) {
?? ??? ??? ??? ?pool.add(JdbcUtil.getConnection());
?? ??? ??? ?}
?? ??? ?} catch (Exception e) {
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?
?? ?}
?? ?
?? ?//統一提供方法,用于從池中獲取連接
?? ?public static synchronized Connection getConnection(){
?? ??? ?if(pool.size()>0){
?? ??? ??? ?Connection con =? pool.remove(0);//刪除這個連接,因為別人此時不能再用它
?? ??? ??? ?
?? ??? ??? ?//真正開始包裝 別人
?? ??? ??? ?MyConnection2 con2 = new MyConnection2(con,pool);
?? ??? ??? ?return con2;
?? ??? ?}else{
?? ??? ??? ?throw new RuntimeException("池中無連接");
?? ??? ?}
?? ??? ?
?? ?}
?? ?
?? ?//還回一個連接到池中
?? ?public static void close(Connection con){
?? ??? ?pool.add(con);//將這個連接回收到池中
?? ?}

?? ?//取池
?? ?public static List<Connection> getPool() {
?? ??? ?return pool;
?? ?}
?? ?
?? ?
?? ?
}


一、外包裝和被包裝實現一樣的接口
public class ConnectionAdapter implements Connection { } 二、
?//包裝模式???????????????????????????????????? //似你?? ?
public class MyConnection2? extends ConnectionAdapter {
?? ?private Connection con;//還有你
?? ?private List<Connection> pool;
?? ?//拜托你
?? ?public MyConnection2(Connection con,List<Connection> pool){
?? ??? ?this.con? = con;
?? ??? ?this.pool = pool;
?? ?}
?? ?
?? ?@Override? //改寫它
?? ?public void close() throws SQLException {
?? ??? ?pool.add(con);
?? ?}

?? ?
}
三、test測試一下
/*** @param args*/public static void main(String[] args) {MyDataSource1 myds = new MyDataSource1();System.out.println("初始化好了,池中連接數:"+myds.getPool().size());Connection con = myds.getConnection();//從池中取一個連接System.out.println("取出但未還,池中連接數:"+myds.getPool().size());System.out.println("當前連接對象:"+con);try {con.close();//面向接口編程,con其實是MyConnection2? 對象。調用的是MyConnection2 .close()既被包裝后改寫的close()方法。} catch (SQLException e) {e.printStackTrace();}System.out.println("用完后還了,池中連接數:"+myds.getPool().size());}

?




?

轉載于:https://www.cnblogs.com/baijin05/p/5073764.html

總結

以上是生活随笔為你收集整理的包装设计模式——的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。