數(shù)據(jù)庫模板實驗報告_第1頁
數(shù)據(jù)庫模板實驗報告_第2頁
數(shù)據(jù)庫模板實驗報告_第3頁
數(shù)據(jù)庫模板實驗報告_第4頁
數(shù)據(jù)庫模板實驗報告_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論