java 工廠設(shè)計(jì)模式_第1頁
java 工廠設(shè)計(jì)模式_第2頁
java 工廠設(shè)計(jì)模式_第3頁
java 工廠設(shè)計(jì)模式_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

工廠設(shè)計(jì)模式一、 概念簡(jiǎn)單工廠模式是用一個(gè)實(shí)際的工廠來創(chuàng)建所有你想創(chuàng)建的對(duì)象,如果創(chuàng)建的對(duì)象太多,那么反而不利于維護(hù),所以還必須要分配責(zé)任,這就有了工廠方法模式,相比于簡(jiǎn)單工廠,它把那個(gè)實(shí)際工廠劃分出來許多小工廠,每個(gè)小工廠負(fù)責(zé)創(chuàng)建一個(gè)產(chǎn)品(對(duì)象),為了可以擴(kuò)展,你可以抽象出來一個(gè)抽象的工廠類,然后每個(gè)小工廠實(shí)現(xiàn)這個(gè)抽象工廠接口。其他和簡(jiǎn)單工廠沒什么區(qū)別。二、 使用時(shí)機(jī)如果在創(chuàng)建對(duì)象時(shí),創(chuàng)建的對(duì)象多且負(fù)責(zé)的情況下就可以使用工廠方法模式三、 優(yōu)點(diǎn)和缺點(diǎn)增加一個(gè)產(chǎn)品很簡(jiǎn)單,只要添加一個(gè)創(chuàng)建這個(gè)產(chǎn)品的實(shí)際工廠和一個(gè)此產(chǎn)品就可以了,簡(jiǎn)單清晰。缺點(diǎn)是增加了代碼量,每個(gè)產(chǎn)品都必須增加一個(gè)工廠,雖然有兩個(gè)產(chǎn)品有某種聯(lián)系,但必須要使用兩個(gè)工廠來創(chuàng)建這兩個(gè)產(chǎn)品。四、 工廠模式使用:Propertiesprop=newProperties();//1.創(chuàng)建讀取properties文件的對(duì)象Inputstreamis=getProperties.class.getClassLoader().getResourceAsStream(fileName);prop.load(is);//prop.load(類名.class.getClassloader().getResourceAsStream(“文件問.properties”));2加載文件的位置str=prop.getProperty(key);//3由于propertiest都是keyvalue對(duì)應(yīng)的,getProperty就是拿到其中值注意的一點(diǎn)是:Static中的方法和static屬性,都不可能出現(xiàn)this,this就是對(duì)象自身引用,而static是靜態(tài)區(qū),對(duì)象是在堆區(qū)類名:不加包名的類名完整類名:包名+類名Java發(fā)射機(jī)制:通過拿到一個(gè)類的字節(jié)碼,然后可以做與這個(gè)類相關(guān)的所有操作一個(gè)java類只會(huì)被加載一次,一個(gè)類只有一個(gè)字節(jié)碼Class代表在內(nèi)存中的字節(jié)碼如何獲取字節(jié)碼:Classcl=T.Class;Classc2=newT().getClass();Classc3=Class.forName(“完整的類名”);1.在DBUtil中使用工廠模式是由于其中用戶使用的數(shù)據(jù)庫不同而導(dǎo)致其中MVC的Dao中使用的sql語言和注冊(cè)sql和連接數(shù)據(jù)庫不同packagecom.ecjtu.util;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.Properties;p.getProperties;publicclassDBUtil{privatestaticStringclassNames;privatestaticStringurl;privatestaticStringdbName;privatestaticStringusername;privatestaticStringpassword;privateDBUtil(){)static{classNames=getProperties.getValueKey("JDBC.properties”,"classNames");url=getProperties.getValueKey("JDBC.properties”,"url");dbName=getProperties.getValueKey("JDBC.properties”,"dbName");username=getProperties.getValueKey("JDBC.properties”,"username");password=getProperties.getValueKey("JDBC.properties”,"password");try{Class.forName(classNames);)catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}publicstaticConnectiongetConn(){Connectionconn=null;try{conn=DriverManager.getConnection(url+dbName,username,password);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnconn;}publicstaticPreparedStatementgetPstem(Connectionconn,Stringsql){PreparedStatementpstem=null;try{pstem=conn.prepareStatement(sql);}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnpstem;}publicstaticResultSetgetRs(PreparedStatementpstem){ResultSetrs=null;try{rs=pstem.executeQuery();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnrs;}publicstaticvoidgetClose(Connectionconn,PreparedStatementpstem,ResultSetrs){if(rs!=null){try{rs.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}=null=null;}if(pstem!=null){try{pstem.close();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}pstem=null;if(conn!=null)(try(conn.close();)catch(SQLExceptione)(//TODOAuto-generatedcatchblocke.printStackTrace();}conn=null;}}}2、由于有多個(gè)需要工廠模式,所以需要封裝p;importjava.io.IOException;importjava.io.InputStream;importjava.util.Properties;publicclassgetProperties(publicstaticStringgetValueKey(StringfilName,Stringkey)(Stringstr=null;Propertiesprop=newProperties();InputStreamis=getProperties.class.getClassLoader().getResourceAsStream(filName);try(prop.load(is);}catch(IOExceptione)(//TODOAuto-generatedcatchblocke.printStackTrace();}finally(try(is.close();}catch(IOExceptione)(//TODOAuto-generatedcatchblocke.printStackTrace();str=prop.getProperty(key);returnstr;3、 properties文件ProductDao4MySqlImpl=duct.dao.impl.ProductDao4MySqlImpl4、 在MVC格式中service需要與dao中的對(duì)象privatestaticProductDaoproductDao;publicstaticProductDaogetProductDao()(Stringp=getProperties.getValueKey("Pperties”,"ProductDao4MySqlImpl");//System.out.println(p);try(productDao=(ProductDao)Class.forName(p).newInstance();)catch(InstantiationExceptione1)(//TODOAuto-generatedcatchblocke1.printStackT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論