版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件設(shè)計與體系結(jié)構(gòu)實驗報告課程名稱軟件設(shè)計與體系結(jié)構(gòu)課程編號0920116實驗項目名稱數(shù)據(jù)庫模板案例學(xué)號班級姓名專業(yè)學(xué)生所在學(xué)院指導(dǎo)教師實驗室名稱地點實驗時間實驗名稱:數(shù)據(jù)庫模板模式案例實驗?zāi)康模簲?shù)據(jù)庫模板模式(ObserverPattern)是設(shè)計模式中行為模式的一種,它解決了上述具有一對多依賴關(guān)系的對象的重用問題。此模式的參與者分為兩大類,一類是被觀察的目標,另一類是觀察該目標的觀察者們。正因為該模式是基于“一對多”的關(guān)系,所以該模式一般是應(yīng)用于由一個目標對象和N個觀察者對象組成(當然也可以擴展為有多個目標對象,但我們現(xiàn)在只討論前者)的場合。當目標對象的狀態(tài)發(fā)生改變或做出某種行為時,正在觀察該目標對象的觀察者們將自動地、連鎖地作出相應(yīng)的響應(yīng)行為。通過本次實驗了解觀察者模式的原理。并能夠運用觀察者模式來進行編程。實驗內(nèi)容1UML類圖2程序的源代碼importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Properties;publicabstractclassJdbcAbstractTemplate{ privatePropertiesprops; //默認的資源文件的路徑 privateStringproperties_Path="src/perties"; //構(gòu)造函數(shù)初始化資源文件 publicJdbcAbstractTemplate(){ props=newProperties(); try{ props.load(newFileInputStream(properties_Path)); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } //可以改變資源文件路徑的構(gòu)造函數(shù) publicJdbcAbstractTemplate(Stringproperties_Path){ setProperties_Path(properties_Path); props=newProperties(); try{ props.load(newFileInputStream(properties_Path)); }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } publicStringgetProperties_Path(){ returnproperties_Path; } publicvoidsetProperties_Path(Stringproperties_Path){ perties_Path=properties_Path; } publicPropertiesgetProps(){ returnprops; } publicvoidsetProps(Propertiesprops){ ps=props; } publicfinalConnectiongetConnect(){ StringuseDB=props.getProperty("useDB"); useDB=useDB.toLowerCase(); StringDBDriver=props.getProperty(useDB+"_DBDriver"); Stringurl=props.getProperty(useDB+"_url"); StringdatabaseName=props.getProperty("databaseName"); url=url+databaseName; Stringusername=props.getProperty("username"); Stringpassword=props.getProperty("password"); try{ Class.forName(DBDriver); returnDriverManager.getConnection("jdbc:odbc:lidan"); }catch(Exceptione){ e.printStackTrace(); } returnnull; } publicfinalvoidclose(Statementst,Connectionconn){ try{ if(st!=null) st.close(); if(conn!=null) conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } publicfinalvoidclose(ResultSetrs,Statementst,Connectionconn){ try{ if(rs!=null) rs.close(); if(st!=null) st.close(); if(conn!=null) conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } } publicbooleansave(Stringsql){ booleanflag=false; Connectionconn=null; Statementst=null; conn=getConnect(); try{ st=conn.createStatement(); if(st.executeUpdate(sql)>0) flag=true; }catch(SQLExceptione){ e.printStackTrace(); }finally{ close(st,conn); } returnflag; }}importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicclassJdbcTemplateTestextendsJdbcAbstractTemplate{ publicvoidselect(Stringsql){ Connectionconn=super.getConnect(); Statementst=null; ResultSetrs=null; try{ st=conn.createStatement(); rs=st.executeQuery(sql); while(rs.next()){ System.out.println(rs.getInt("編號")+"is"+rs.getString("用品")); } }catch(SQLExceptione){ e.printStackTrace(); } finally{ close(rs,st,conn); } } /** *@paramargs */ publicstaticvoidmain(String[]args){ JdbcTemplateTesttest=newJdbcTemplateTest(); test.select("select編號,用品fromobject"); }}#useDB\u4e3a\u6240\u4f7f\u7528\u7684\u6570\u636e\u5e93\u7c#databaseName\u683c\u5f0f\u5982\u4e0b\uff1a#sql2000:\u6570\u636e\u5e93\u540d;mysql:\u6570\u636e\u5e93\u540daccess:\u6570\u636e\u5e93\u6240\u5728\u8def\u5f84useDB=accessusername=password=databaseName=LunaGage#sqlserver2000databasesqlserver2000_DBDriver=com.microsoft.jdbc.sqlserver.SQLServerDriversqlserver2000_url=jdbc:sqlserver://localhost:1433;databaseName=#mysqldatabasemysql_DBDriver=com.mysql.jdbc.Drivermysql_url=jdbc:mysqlsql://localhost:3306/;#accessdatabaseaccess_DBDriver=sun.jdbc.odbc.JdbcOdbcDriveraccess_url=jdbc:odbc:3實驗截圖對該模式的認識經(jīng)過本次數(shù)據(jù)庫模板模式的實驗,通過自己動手編代碼,是自己理解觀察者模式機制,并且知道數(shù)據(jù)庫模板適用性模板方法應(yīng)用與以下情況:1.一次性實現(xiàn)一個算法的不變部分,并將可變行為留給子類來實現(xiàn)。2.集中各個子類中的公共行為并將其置入一個公共類(本例中是超類)中,以避免代碼重復(fù)。這是“代碼重構(gòu)”的一個經(jīng)典實例。3.為控制子類擴展超類操作的方式,可定義在特定點調(diào)用“鉤子”操作的模板
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高端住宅賣房墊資金融服務(wù)合同3篇
- 2024清潔能源項目專用清潔勞務(wù)分包合同3篇
- 2024年環(huán)保鍋爐建設(shè)與運營承包合同
- 二零二五年度東莞市企業(yè)用工風險防范勞動合同3篇
- 二零二五年度個人門面租賃合同包含配套設(shè)施租賃、物業(yè)管理及維護服務(wù)3篇
- 德語課程設(shè)計怎么寫
- 2024模具設(shè)計及制造委托加工合同范例3篇
- 2025年度安全員現(xiàn)場安全監(jiān)督及隱患排查服務(wù)合同
- 美食視頻腳本課程設(shè)計
- 福建小學(xué)道法課程設(shè)計
- GB/T 44890-2024行政許可工作規(guī)范
- 軍工合作合同范例
- 【7地XJ期末】安徽省宣城市寧國市2023-2024學(xué)年七年級上學(xué)期期末考試地理試題(含解析)
- 2025年中國稀土集團總部部分崗位社會公開招聘管理單位筆試遴選500模擬題附帶答案詳解
- 超市柜臺長期出租合同范例
- 廣東省廣州市2025屆高三上學(xué)期12月調(diào)研測試語文試題(含答案)
- 2024-2025學(xué)年深圳市初三適應(yīng)性考試模擬試卷歷史試卷
- 16J914-1 公用建筑衛(wèi)生間
- 海拔高度與氣壓、空氣密度、重力加速度對照表
- 《青田石雕》教學(xué)設(shè)計
- 110KV電網(wǎng)線路繼電保護課程設(shè)計
評論
0/150
提交評論