![JAVA設計模式之創(chuàng)造型模式介紹_第1頁](http://file4.renrendoc.com/view/431035202d6024fa1a76ca8bca97280c/431035202d6024fa1a76ca8bca97280c1.gif)
![JAVA設計模式之創(chuàng)造型模式介紹_第2頁](http://file4.renrendoc.com/view/431035202d6024fa1a76ca8bca97280c/431035202d6024fa1a76ca8bca97280c2.gif)
![JAVA設計模式之創(chuàng)造型模式介紹_第3頁](http://file4.renrendoc.com/view/431035202d6024fa1a76ca8bca97280c/431035202d6024fa1a76ca8bca97280c3.gif)
![JAVA設計模式之創(chuàng)造型模式介紹_第4頁](http://file4.renrendoc.com/view/431035202d6024fa1a76ca8bca97280c/431035202d6024fa1a76ca8bca97280c4.gif)
![JAVA設計模式之創(chuàng)造型模式介紹_第5頁](http://file4.renrendoc.com/view/431035202d6024fa1a76ca8bca97280c/431035202d6024fa1a76ca8bca97280c5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
JAVA設計模式之創(chuàng)造型模式創(chuàng)造型模式包括工廠方法、抽象工廠、創(chuàng)造者模式、單態(tài)模式、原型模式共5類1、工廠方法定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。FactoryMethod使一個類的實例化延遲到其子類。適用條件:1)當一個類不知道它所必須創(chuàng)建的對象的類的時候。2)當一個類希望由它的子類來指定它所創(chuàng)建的對象的時候。3)當類將創(chuàng)建對象的職責委托給多個幫助子類中的某一個,并且類希望將哪一個幫助子類是代理者這一信息局部化的時候。參與者:1)Product:定義工廠方法所創(chuàng)建的對象的接口。2)ConcreteProduct:實現Product接口。3)Creator:聲明工廠方法,該方法返回一個Product類型的對象。Creator也可以定義一個工廠方法的缺省實現,它返回一個缺省的ConcreteProduct對象??梢哉{用工廠方法以創(chuàng)建一個Product對象。4)ConcreteCreator:重定義工廠方法以返回一個ConcreteProduct實例。示例:檔packa無ge哄zant撫ip.mo部dules施;建publi群c腸魚class易Fact脅oryMe役thodT藥est{獵夸pub歇lic址蹈stati愚c如管void磁main掃(Stri托ng[]劇args)據{憲凈惕IWork顯Facto繪ryst要udent儲WorkF后actor喊y=曲new闊Stud骨entWo姓rkFac撓tory(笑);穿門淹stude窯ntWor愿kFact澡ory.g逃etWor梅k().d羞oWork箱();技輸亂IWork訓Facto地ry絕teach睬erWor稼kFact然or富y擺=像ne曉w躁Teac漲herWo煙rkFac礎t室ory()魯;舌物疤teach棗erWor境kFact悔ory煉.getW企ork()酒.doWo駱rk();}}戚//榆Produ程ct賊inter下face慧Work怪{砍份void亭doWo馳rk();}綁//Co慈ncret樣eProd箭uct稠class諸Stud暖entWo命rk在imple攪ments三Work敏{腿荒@Over濁ride癢杜publi貴c青望void瘦doWo么rk()潤{晌滲略Syste著m.灘out疤.prin壘tln(貌"祝學生做作亞業(yè)膨"斤);}}辯clas團s棄Teac穗h朋erWor捕k誓imple翠ment燕s刪Work打{文僵@Over行ride塌猛publi穗c絮落void刪doWo烈rk()到{裝摸棕Syste壯m.籮out薪.p想rintl逝n(粥"南老師審批作翅業(yè)真"塌);}}幣//Cr爸eator曠inter仗face深IWor就kFact覆ory{箭籍Work煌getWo繭rk();}鼻//Co遠ncret跳eCrea桃tor查class腎Stud脅entWo該rkFac拒tory睛imple續(xù)ments獻IWor稻kFact胳ory{揚策@Over盒ride棄費publi潛c芹Work尼g斧etWor黑k坑(紙){鑒脆株retur踏n卷罰new滿Stud饑entWo霉rk();}}浮class僵Teac秩herWo激rkFac云tory責imple毅ments棗精IWork圖Facto薯ry{無稈@Over效ride冒莫publi那c桑Work畢getW扛ork()狀{稅肢樓retur續(xù)n口斬new迫Teac呈herWo煩rk();}}輸出結果:學生做作業(yè)銷老師審批作耐業(yè)密2哥悉抽象工廠權提供一個創(chuàng)易建一系列相卸關或相互依我賴對象的接劈口,而無需安指定它們具按體的類。適用條件:傭1購)倍一個舊系統(tǒng)要獨立株于它的旁產塑品的創(chuàng)建、與組合和表示透時。攀2綁)擴一拆個劑系統(tǒng)要由多氏個產品系列周中的一個來應配置時。椅3模)騙當你要強調修一系列相關幅的產品對象致的設計以便價進行聯合使怒用時黎。麗4少)奇當你提供一護個產品類庫晚,而只想顯錄示它們創(chuàng)的疑接尊口而不是實肝現時。參與者:留1拘)細A講b能s定tract州Facto晝ry豐:吳聲明一個創(chuàng)堆建抽象產品刷對象的操作野接口罵。喘2象)分Concr勝eteFa筑ctory活:異實現創(chuàng)建具竭體產品對象初的操作籃。沒3勾)就Abstr掀actPr藍oduct仙:幫為一類產品悲對象聲明一短個接口。紹4豬)抖Concr稅etePr支odu摟c耳t盡:譯定義一個將盆被相應的具慨體工廠創(chuàng)建套的產品連對駝象驢,崗實現換A愿bstra愚ctPro濃duc沈t舊接口像。秘5導)繪Cl鎮(zhèn)i狀ent予:嬸僅使用職由嬌Abstr幫act劣Facto夾r編y癢和披Abstr欄actPr校oduc荒*照類聲明的接射口磨。示例:煎packa成ge判zant劈ip.mo遠dules鉤;蔑publi紛c閱伏class巧Abst旱ractF喂actor摧yTest減{牧膽publi渠c可檢stati胡c忽輛void霜main掌(Stri驟ng[]鴉args)籍{容塌悼//cl銅ient質摧狀IAnim業(yè)alFac煌tory倉black禽Anima致lFact艷ory按=殺new殿Blac性kAnim看alFac御tory(活);烏奸敗ICat脅black店Cat=拒迎bl逮ackAn匆i蔽m撫alFac提t(yī)ory潮.crea稍te玉Cat()屬;舒猾航black沫Cat.e服at();臣濕量IDog倒black勇Dog=礦置black昏Anima嚴lFact冠ory即.crea斥teDog侵();意簡寨black燒Dog.e差at();勇叨涉IAnim陶alFac勉tory嚼white息Anima杜lFact爭ory=勾踏new腦Whit悄eAnim飽alFac嫁tory(拘);絞視燙ICat防white禍Cat=中whit番eAnim惱alFac承tory.狡creat薯eCat(賣);待奶眉white窗Cat.e何at();趟乏壟IDog利white休D火o選g=w廁hiteA厘nimal屬F姓actor釀y.cre張ateDo獅g();繼決損white婆Dog.e尖at();}}追//ab國strac咸tfa始ctory矩inter恒face贈IAni柿malFa疲ctory鄙{上簡ICat左creat狐eCat(歌);侮樸IDog兆creat叔eDog(仰);}罰//ab辣strac全tpro胞duct則inter泡face落ICat朗{培傅void飲eat(崇);}仍inter授face盟IDog宵{雄今void蛛eat(舌);}虧//co鍋ncret鉤epro膚duct墊c耽lass掌Blac椒kCat化im歪pleme并nts趨ICat列{傭爺@Over掉ride身雞publi蘇c斥割void睛eat(逆){呢鄉(xiāng)皮Syste喪m.老o陡ut千.prin僻tln(媽"the奸black館cat杠isea娘ting"你);}}膜class永Whit增eCat致imple煤ments斬ICat膏{堅勵@Over咬ride題稼publi判c獎屆void晨eat(磨){枯時期Syste歸m.作out霜.prin內tln(障"the坡white扁cat把isea業(yè)ting"結);}}閑class修Blac熊kDog閣i致m溜pleme歲nts捕IDog它{朝柜@Over階ride悉揮publi敬c便密void鞭eat(毒){朱牙掘Syste乘m.獻out擋.prin圓tln(集"the晶black水dog葵isea企ting"夏);}}弊class閥Whit娃eDog瀉imple匠ments森IDog旱{柄刃@Over繩ride間模publi腹c搭腰void錯eat(言){電甲鞭Syste只m.果out濁.prin攔tln(沃"the消white丹dog狼isea響ting"缸);}}閉//co舟ncrea致tefa催ctory烏class嫌Blac乒k律A甜nimal埋Facto德ry總imp禿lemen凳ts奔IAni攤malFa浪ctory恰{恥逆@Over笨ride剩段publi配c半ICat閘crea馳teCat托(){甜域趕retur漆n域膀new持Blac防kCat(蛾);}更花@Over略ride葉四publi匯c劫IDog祝crea寨teDog巴(){款律姥retur言n互甚new佩Blac釋kDog(都);}}間class眠Whit焦eAnim混alFac輕tory兇imple延ments槽IAni且malFa趨ctory兔{腔光@Over高ride識糖publi挽c疲ICat點c品r然eateC防at()挑{亞浩沾re惕turn追辮new蜻Whit脈eCat(已);}完銷@Over駐ride幅哄publi么c軋IDog狀crea脂teDog撐(){麥吩豪retur灌n練墊new鋪Whit須eDog(泡);}}輸出結果:波theb宇lack碑cati兄seat喊ing孔theb否lack政dogi玉seat削ing偉thew播hite波cati蹲seat膝ing起thew促hite洗dogi述seat觀ing棟3沫、創(chuàng)造者模墾式俘將一個復雜捏對象的構燥造選與它的表示示分離,壞使得輝同樣的構建捏過程可以創(chuàng)斯建不同的表后示。適用條件:溉1素)畏當創(chuàng)建復雜錯對象的算法借應該獨立于匪該對象的組幣成部分以及塘它們的裝配奸方式時。仔2吳)燒當構造過程綁必須允籍許銳被構造的對胖象有不同瞞的惰表示時。參與者:梁1質)攝Build捧e竄r學:為創(chuàng)建一盛個脂Build備e害r描對象的各個駐部件指定抽殘象接口。番2耗)極Concr損eteBu糊ilde悟r盾:實撈現銀Build丈e無r涂的接口以構銜造和裝配該高產品的各個召部件。定義仙并明確它所壞創(chuàng)建的表示復。提供一個飼檢索產品的古接口。柿3移)遇Direc仁to羽r零:構造一個憐使面用宣Build循e夾r養(yǎng)接口的對象刻。我4祝)轉Produ賀c沒t拼:表示被構余造的復雜對挪象仇。場Conce猾teBui撞lde能r泥創(chuàng)建該產品筑的內部表示委并定義它的鐵裝配過程。染包背含定義組成逼部件的類,奉包括將這些圣部件裝配成愁最終產品的代接口。示例:疤packa超ge雪zant爹ip.mo屑dules娘;突publi候c虹針class完Crea花torTe稱st{//測試裝沈p唐ublic顧吐stati猜c銅尤void扯main歷(Stri搭ng[]確args)涂{裕發(fā)效Perso獻nDire構ctor淋pd=譽new限Pers叔onDir揉ector謊();掩思噴Perso信nper逃son=p妻d.con營struc貧tPers羊on(防new魂ManB窩uilde游r());越嫩澤Syste穗m.舊out爛.prin前tln(p渡erson擔.getB賣ody()但);尋鍛陶Syste之m.排out冶.prin盜tln(p齒erson酬.getH跟ead()竄);補稻拌Sys椅tem.良out溜.prin緒tln(p襖erson急.getF齊oot()偵);}}會//pr誼oduct盾class弦Pers繪on{兄濾priva刷te搬Stri見ng記head茅;奧聲priva秤te賣Stri親ng忍body忠;頂邁priva慰te擊Stri蛋ng鋤foot葵;銹債publi胳c夢Stri慶ngge喜tHead懶(){轉蔥紙retur輩n副麥head祖;}排綁publi連c否丟void叢setH星e煮ad(St世ring座head)辟{原閃摔this缸.交head膽=he綁ad;}最傷publi蓄c臥Stri腎ngg妄etBod灶y(){遲除魯retur務n筒況body間;}渠會publ從ic重評void職setB爺ody(S跳tring嘗body掙){戶翁議this可.丸body倡=bo剃dy;}班爆publi監(jiān)c不Stri防ngge頓tFoot補(){軌臥堡retur論n衡碧foot葛;}犯短publi把c坦阻void水setF奴oot(S命tring小foot宜){船嗎步this程.氧foot義=fo還ot;}}卵c賢lass嚴Man鏈exten隆ds濤Pers名on{}趴//Bu緩ilder勞inter際face拔Pers朝onBu飼ilder縱{貍秧void召buil圓dHead童();廈本void旋b勢uildB厲ody()鎮(zhèn);謎腫void桐buil殖dFoot市();桐行Perso女nbui釘ldPer績son()濃;}訓//co浴ncret湯ebui林lder池class億ManB噴uilde怎r掙imple管ments攀Pers給onBui佛lder{立款Perso庭n頌perso副n大;賤吼publi擋c庸ManB鄉(xiāng)uilde招r(){玉弟刊pe馬rson攤=架new仗Man(徹);}苦貿publi梢c閣稻void僚buil腸dBody呆(){榜看盯perso撇n引.setB爸ody(底"落創(chuàng)造男人的忍身訴體般"筐);}嘗蠢publi躬c單淘void晃buil耕dFoot竄(){爆冤搜perso廊n凳.setF播oot(獅"妹創(chuàng)造男人的陜腳節(jié)"封);}晚趣publi曲c記遠void躁buil唇dHead本(){充展捷perso扭n和.setH都ead(蔥"播創(chuàng)造男人的保頭躍"輸);}督如publi獸c觸Pers片onbu檢ildPe溜rson(怠){詢噸呈retur泛n燒故perso溫n喊;}}謠//Dir拌ctor臣cla歌ss相Pers曉onDir怎ector具{用民publi翅c玉Pers傭onco船nstru至ctPer鼓son(P烤erson圾Bu蜜ilder斑pb){嘉皆穴pb.bu屋ildHe佩ad();孔宗暖pb.bu嗎ildBo凍dy();斤舌洞pb.bu懸ildFo壇ot();狀珠鞠retur包n桂pb.b衣uildP坡erson所();}}輸出結果:倒創(chuàng)造男人的飄身體子創(chuàng)造男人的險頭尼創(chuàng)造男人的浸腳核4農、單態(tài)模式率保證一個類惹僅有一個實爪例,僅提供則一個訪問他協的全局訪問爽點。適用條件:猛1懸)當類只能笨有一個實例斤而且客戶可純以從一個總抵所周知的訪晉問點訪問它傻時。稀2民)凡當這個唯一巾實例應該是辭通過子類化端可擴展的,礦并且客戶應匆該無需更改聾代碼就能使發(fā)用一個擴展誕的實例時。參與者:坊Si捆nglet瑞o察n敞:伸定義一鴨個城Insta部nc坐e司操作,允許金客戶訪問它哲的唯一實例怨。啞Insta扭nc綢e種是一個類操伯作??赡茇摪贺熅墑?chuàng)建它自己丟的唯一實例猶。示例:估packa提ge結zant拔ip.mo型dules防;午publi桃c很李class片Sing扛leton菜Test常{棄傲//書殼測試創(chuàng)孝publi滲c悶重stati輛c糞配void康main粥(Stri抓ng[]杠args)選{胡番援Singl摩eton顫sing端=Sin凳gl裳eton.澇getIn腐stanc雪e稼();旺大刺Singl忠eton害sing2衡=Si陽nglet迫on.炕getIn引sta琴nce跟()臥;粱慧誕Syste替m.扒out貓.prin獵tln(s睜ing);沃錦扛Syste際m.腫out涉.prin鋪tln(s條ing2)齡;}}忽class府Sing要leton迷{固蚊priva貿te時陡stati嫁c儀Sing旁leton巧鏟sing京;貌級priva扯te折Sing詞leton膊(){使甩業(yè)Syste平m.衛(wèi)out沾.prin稻tln(啊"省單實例模式院對蜂象虜"媽);}家飼publi怨c陷孟stati朗c也S綱ingle躺tong缺etIns錦tance濕(){絹嫌另if付(盒sing掙==弱null典){龍兩讓議sing鍛=割n庭ew訓Si拉nglet咐on();}抽虹博retur邁n同啞sing渣;}}輸出結果:縫單實例模式枝對象廉zanti峽p.mod竄ules.煉Singl俊eton@室de6ce孫d肌zanti糟p.mod貌ules.掀Singl蝕eton@豪de6ce奶d廣5視、原型模式勇用原型實例碧指定創(chuàng)建對肢象的種類,擴并且通過拷們貝這些原型握創(chuàng)建新的對胞象。適用條件:懂1塞)搶當一個系統(tǒng)急應該獨立于弊它的產品創(chuàng)域建眠、構成和表宇示時。妥2景)蒜當要實例灰化的類是在唯運行時刻指劉定時,例如謎,通過動態(tài)炎裝載。同3娃)殊為了避免創(chuàng)莊建一個與產等品類層次平撐行的工廠層止次時。所4珠)伐當一個類的鮮實環(huán)例只能有幾藏個不同狀態(tài)沒組合中的一施種時。建立撫相應數目的蘆原型并克隆瞇它們可能比伶每次用合適芒的狀態(tài)手工猜實例化該類忌更方便一些屬。參與者:忘1歪)程Proto旬type冷:神聲明一個克犬隆自身的接韻口。茫2準)艘Concr湊etePr哲ototy亦pe心:劍實現一個克圈隆自身的操偉作。隸3涌)扁Clien名t皂:旁讓一個原型儀克隆棕自身從而創(chuàng)傾建一個新的慌對象。示例:蠶packa點ge議zant雷ip.mo竊dules則;擠publi遍c止器class條Prot乏ot嶼ypeTe酸st{危防//晝薄測試稱協publi升c朱脂stati穴c冶肺void賭main斃(Stri撤ng[]抵args)界繼t王hrows勇Exce聰ption互{工打瓜Proto寺type枕proty惹pe=賠new蟻Conc羅reteP榨rotot框ype(浸"積北栗京郊"謙);塔替對Proto薪type施proty惑pe2=狐(Pro感totyp協e)pr碑otype患.clon貿e();橋
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 夫妻離婚協議格式
- 農業(yè)生產風險防范與管理手冊
- 股權質押轉讓協議書
- 公司食品采購合同
- 政府采購合同示本
- 信息與通信網絡安全管理作業(yè)指導書
- 2025年婁底道路貨運駕駛員從業(yè)資格考試題庫
- 2025年三門峽駕駛資格證模擬考試
- 2025年昆明貨運從業(yè)資格證考試模擬題庫及答案大全
- 電力行業(yè)標準合同(2篇)
- 2023年初級出版資格證考試:《初級出版專業(yè)實務》真題模擬匯編(共267題)
- SYT 0447-2014《 埋地鋼制管道環(huán)氧煤瀝青防腐層技術標準》
- 【全】小學一年級下冊科學教學設計廣東版粵教版
- 心理學在員工培訓與發(fā)展中的應用研究
- XX醫(yī)院按病種付費(DIP)工作實施方案(按病種分值付費(DIP)實施工作流程)
- IEC-62368-1-差異分享解讀
- 雙溪漂流可行性報告
- 英語單詞詞根
- 問題學生轉化策略課件
- GMP附錄計算機化系統(tǒng)整體及條款解讀
- 腰椎間盤突出癥中醫(yī)特色療法課件
評論
0/150
提交評論