freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java程序設(shè)計(jì)模式程序設(shè)計(jì)-資料下載頁(yè)

2025-07-07 11:53本頁(yè)面
  

【正文】 5. =age。26. =p。27. }28. publicObjectclone(){29. Studento=null。30. try{31. o=(Student)()。32. }catch(CloneNotSupportedExceptione){33. (())。34. }35. //調(diào)用Professor類的clone()方法實(shí)現(xiàn)深拷貝36. =(Professor)()。37. returno。38. }39. }40. publicstaticvoidmain(String[]args){41. Professorp=newProfessor(wangwu,50)。42. Students1=newStudent(zhangsan,18,p)。43. Students2=(Student)()。44. =lisi。45. =30。46. //學(xué)生1的教授不改變47. (name=++,+age=+)。48. }3.利用串行化來(lái)做深復(fù)制把對(duì)象寫到流里的過(guò)程是串行化(Serilization)過(guò)程,又叫對(duì)象序列化,而把對(duì)象從流中讀出來(lái)的(Deserialization)過(guò)程 叫反序列化。應(yīng)當(dāng)指出的是,寫在流里的是對(duì)象的一個(gè)拷貝,而原對(duì)象仍然存在于JVM里面,因此在Java語(yǔ)言里深復(fù)制一個(gè)對(duì)象,常??梢韵仁箤?duì)象實(shí)現(xiàn) Serializable接口,然后把對(duì)象(實(shí)際上只是對(duì)象的一個(gè)拷貝)寫到一個(gè)流里,再?gòu)牧骼镒x出來(lái)便可以重建對(duì)象。如下為深復(fù)制源代碼:[java] view plaincopy1. publicObjectdeepClone(){2. //將對(duì)象寫到流里3. ByteArrayOutoutStreambo=newByteArrayOutputStream()。4. ObjectOutputStreamoo=newObjectOutputStream(bo)。5. (this)。6. //從流里讀出來(lái)7. ByteArrayInputStreambi=newByteArrayInputStream(())。8. ObjectInputStreamoi=newObjectInputStream(bi)。9. return(())。10. }11. 這樣做的前提是對(duì)象以及對(duì)象內(nèi)部所有引用到的對(duì)象都是可串行化的,否則,就需要仔細(xì)考察那些不可串行化的對(duì)象可否設(shè)成transient,從而將之排除在復(fù)制過(guò)程之外。上例代碼改進(jìn)如下。12. classProfessorimplementsSerializable{13. Stringname。14. intage。15. Professor(Stringname,intage){16. =name。17. =age。18. }19. }20. classStudentimplementsSerializable{21. Stringname。22. intage。23. Professorp。24. Student(Stringname,intage,Professorp){25. =name。26. =age。27. =p。28. }29. publicObjectdeepClone()throwsIOException,OptionalDataException,ClassNotFoundException{30. //將對(duì)象寫到流里31. ByteArrayOutoutStreambo=newByteArrayOutputStream()。32. ObjectOutputStreamoo=newObjectOutputStream(bo)。33. (this)。//objectofstudnet34. //從流里讀出來(lái)35. ByteArrayInputStreambi=newByteArrayInputStream(())。36. ObjectInputStreamoi=newObjectInputStream(bi)。37. return(())。38. }39. publicstaticvoidmain(String[]args){40. Professorp=newProfessor(wangwu,50)。41. Students1=newStudent(zhangsan,18,p)。42. Students2=(Student)()。43. =lisi。44. =30。45. //學(xué)生1的教授不改變46. (name=++,+age=+)。47. }48. }Builder設(shè)計(jì)模式 Builder建造者模式將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。Builder 模式是一步一步創(chuàng)建一個(gè)復(fù)雜的對(duì)象,它允許用戶可以只通過(guò)指定復(fù)雜對(duì)象的類型和內(nèi)容就可以構(gòu)建它們,用戶不需要了解所構(gòu)建對(duì)象的內(nèi)部具體構(gòu)建細(xì) 節(jié),Builder建造設(shè)計(jì)模式的目的是為了將構(gòu)造復(fù)雜對(duì)象的過(guò)程和它的部件解耦。Builder建造者設(shè)計(jì)模式中有兩個(gè)重要角色:Director指導(dǎo)者和Builder建造者。Director指導(dǎo) 者相當(dāng)于設(shè)計(jì)師或架構(gòu)師,擁有整個(gè)產(chǎn)品各個(gè)部件之間關(guān)系的構(gòu)建藍(lán)圖。Builder建造者是部件的具體創(chuàng)建者,Builder建造者根據(jù)Director 指導(dǎo)者的指示創(chuàng)建產(chǎn)品的各個(gè)部件,最終由Director構(gòu)建出完整產(chǎn)品。Builder建造者設(shè)計(jì)模式的原諒如下:以軟件編程為例說(shuō)明Bulder建造者設(shè)計(jì)模式,在編程中常用步驟為:編輯、編譯、鏈接、壓縮、加密、運(yùn)行等過(guò)程。例子代碼如下:[java] view plaincopy1. //Director指導(dǎo)者角色2. classDirector(){3. privateBuilderbuilder。4. publicDirector(Builderbuilder){5. =builder。6. }7. publicvoidbuild(){8. ()。9. ()。10. ()。11. ()。12. ()。13. ()。14. }15. }16. //抽象Builder建造者角色17. interfaceBuilder{18. publicvoidedit()。19. publicvoidpile()。20. publicvoidlink();21. publicvoidpress()。22. publicvoidencrypt()。23. publicvoidrun()。24. }25. //具體Builder建造者角色26. publicclassJavaBuilderimplementsBuilder{27. publicvoidedit(){28. (“JavaBuilderisediting”)。29. }30. publicvoidpile(){31. (“JavaBuilderispiling”)。32. }33. publicvoidlink(){34. (“JavaBuilderislinking”)。35. }36. publicvoidpress(){37. (“JavaBuilderispressing”)。38. }39. publicvoidencrypt(){40. (“JavaBuilderisencrypting”)。41. }42. publicvoidrun(){43. (“JavaBuilderisrunning”)。44. }45. publicstaticvoidmain(String[]args){46. Builderbuilder=newJavaBuilder()。47. Directordirector=newDirector(builder)。48. ()。49. }50. }Builder建造者模式和AbstraceFactory抽象工廠模式的區(qū)別:Builder建造者模式和AbstraceFactory抽象工廠模式非常類似,很多人經(jīng)常分不清楚,區(qū)別如下:(1).抽象工廠模式中,每一次工廠物件被呼叫時(shí)都會(huì)傳回一個(gè)完整的產(chǎn)品物件,而使用端有可能會(huì)決定把這些產(chǎn)品組裝成一個(gè)更大的和復(fù)雜的產(chǎn)品,也有可能不 會(huì)。工廠物件是沒(méi)有狀態(tài)的,不知道上一次構(gòu)建的是哪一個(gè)產(chǎn)品,也沒(méi)有未來(lái)的概念,不知道下一次構(gòu)建的是哪一個(gè)產(chǎn)品,更不知道自己構(gòu)建的產(chǎn)品在更高層的產(chǎn)品 結(jié)構(gòu)藍(lán)圖中是什么位置。(2).建造者模式不同,建造模式的重點(diǎn)在指導(dǎo)者(Director)角色。指導(dǎo)者是有狀態(tài)的,它知道整體藍(lán)圖,知道上一次、這一次和下一次交給建造者 (Builder)角色去構(gòu)建的零件是什么,以便能夠?qū)⑦@些零件組裝成一個(gè)更大規(guī)模的產(chǎn)品。它一點(diǎn)一點(diǎn)地建造出一個(gè)復(fù)雜的產(chǎn)品,而這個(gè)產(chǎn)品的組裝程式就發(fā) 生在指導(dǎo)者角色內(nèi)部。建造者模式的使用端拿到的是一個(gè)完整的最后產(chǎn)品。換言之,雖然抽象工廠模式與建造模式都是設(shè)計(jì)模式,但是抽象工廠模式處在更加具體的尺度上,而建造模式則處于更加宏觀的尺度上。一個(gè)系統(tǒng)可以由一個(gè)建造 模式和一個(gè)抽象工廠模式組成,使用端通過(guò)呼叫這個(gè)導(dǎo)演角色,間接地呼叫另一個(gè)抽象工廠模式的工廠角色。工廠樣式傳回不同產(chǎn)品族的零件,而建造者模式則把它 們組裝起來(lái)。 Facade設(shè)計(jì)模式Facade門面設(shè)計(jì)模式為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,應(yīng)用程序本身將不再直接依賴于子系統(tǒng)原件,而是依賴一個(gè)門面,當(dāng)想要修改某個(gè)原件的行為時(shí),只需要修改實(shí)現(xiàn)類即可,應(yīng)用程序本身不需要做任何修改。Facade門面設(shè)計(jì)模式結(jié)構(gòu)如下:以JDBC為例演示Facade門面設(shè)計(jì)模式:[java] view plaincopy1. //JDBCFacade2. interfaceJDBCUtil{3. publicStatementgetStatement()4. publicResultSetgetResult(Stringsql)。5. publicstaticvoidclose()。6. }7. //MySqlJDBC8. classMySqlUtilimplementsJDBCUtil{9. privatestaticConnectionconn=null。10. privatestaticStatementst=null。11. privatestaticResultSetrs=null。12. privatestaticfinalStringDRIVER=13. privatestaticfinalStringURL=jdbc:mysql://localhost:3306/test。14. privatestaticfinalStringUSERNAME=root。15. privatestaticfinalStringPASSWORD=root。16. static{17. //寫入驅(qū)動(dòng)所在處,打開(kāi)驅(qū)動(dòng)18. try{19. (DRIVER)。20. conn=(URL,USERNAME,PASSWORD)。21. }catch(Exceptione){22. (MySql數(shù)據(jù)庫(kù)連接失敗,失敗原因:+())。23. 16
點(diǎn)擊復(fù)制文檔內(nèi)容
語(yǔ)文相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1