国产精品一久久香蕉产线看-国产精品一区在线播放-国产精品自线在线播放-国产毛片久久国产-一级视频在线-一级视频在线观看免费

設(shè)計模式課程設(shè)計報告

時間:2022-07-03 02:31:00 輔助設(shè)計與工程計算 我要投稿
  • 相關(guān)推薦

設(shè)計模式課程設(shè)計報告

  通過這次課程設(shè)計使我們都更加懂得并親身體會到了理論與實際相結(jié)合的重要性,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從實踐中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。以下是小編整理的設(shè)計模式課程設(shè)計報告,歡迎閱讀。

設(shè)計模式課程設(shè)計報告

  一、問題要求及任務(wù)描述

  設(shè)計模式課程作業(yè)要求獨立制作一個軟件,功能是實現(xiàn)23種模式的定義、優(yōu)缺點以及顯示示例代碼。

 。ㄒ唬、題目要求

  設(shè)計軟件,將23種設(shè)計模式結(jié)合,要能夠顯示每種模式的定義、優(yōu)缺點以及舉例說明例子,加上簡單的代碼說明。

  (二)、主要任務(wù)

  主要是選擇一種工具,實現(xiàn)顯示的功能,整理各種模式的定義,概念、使用情況、以及選擇模式實例,代碼實現(xiàn);

 。ㄈ、典型實例實現(xiàn)(任選三個分屬于不同設(shè)計模式的實例)

  1、單例模式 定義與結(jié)構(gòu)

  單例模式的意思就是只有一個實例。單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。這個類稱為單例類。 單例模式的要點

  顯然單例模式的要點有三個;一是某個類只能有一個實例;二是它必須自行創(chuàng)建這個實例;三是它必須自行向整個系統(tǒng)提供這個實例。在下面的對象圖中,有一個單例對象,而客戶甲\、客戶乙和客戶丙\是單例對象的三個客戶對象?梢钥吹,所有的客戶對象共享一個單例對象。而且從單例對象到自身的連接線可以看出,單例對象持有對自己的引用。靜態(tài)變量(這是c/c++的叫法,其他語言或有不同)是實現(xiàn)單例模式的要素。 單例模式的2種方式:餓漢式,懶漢式

  單例模式屬于對象創(chuàng)建型模式,其意圖是保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。對一些類來說,只有一個實例是很重要的,雖然系統(tǒng)中可以有許多打印機,但卻只應(yīng)該有一個打印機假脫機,只應(yīng)該有一個文件系統(tǒng)和一個窗口管理器,一個數(shù)字濾波器只能有一個A/D轉(zhuǎn)換器,一個會計系統(tǒng)只能專用于一個公司。怎樣才能保證一個類只有一個實例并且這個實例易于被訪問,一個全局變量使得一個對象可以被訪問,但它不能防止你實例化多個對象,一個更好的方法是讓類自身負(fù)責(zé)保存他的唯一實例。這個類可以保證沒有其他實例可以被創(chuàng)建,并且它可以提供一個訪問該實例的方法,這就是Singleton模式。

  一個產(chǎn)生隨機數(shù)的例子,整個應(yīng)用程序中只需要一個類的實例來產(chǎn)生隨機數(shù),客戶端程序從類中獲取這個實例,調(diào)用這個實例的方法nextInt(),公用的方法訪問需要進行同步,這是單例模式需要解決的同步問題。

  2、工廠方法模式 定義與結(jié)構(gòu)

  工廠方法模式的意義是定義一個創(chuàng)建產(chǎn)品對象的工廠接口,將實際創(chuàng)建工作推遲到子類當(dāng)中。核心工廠類不再負(fù)責(zé)產(chǎn)品的創(chuàng)建,這樣核心類成為一個抽象工廠角色,僅負(fù)責(zé)具體工廠子類必須實現(xiàn)的接口,這樣進一步抽象化的好處是使得工廠方法模式可以使系統(tǒng)在不修改具體工廠角色的情況下引進新的產(chǎn)品。

  工廠方法模式是簡單工廠模式的衍生,解決了許多簡單工廠模式的問題。首先完全實現(xiàn)‘開-閉 原則’,實現(xiàn)了可擴展。其次更復(fù)雜的層次結(jié)構(gòu),可以應(yīng)用于產(chǎn)品結(jié)果復(fù)雜的場合。

  工廠方法模式的對簡單工廠模式進行了抽象。有一個抽象的Factory類(可以是抽象類和接口),這個類將不在負(fù)責(zé)具體的產(chǎn)品生產(chǎn),而是只制定一些規(guī)范,具體的生產(chǎn)工作由其子類去完成。在這個模式中,工廠類和產(chǎn)品類往往可以依次對應(yīng)。即一個抽象工廠對應(yīng)一個抽象產(chǎn)品,一個具體工廠對應(yīng)一個具體產(chǎn)品,這個具體的工廠就負(fù)責(zé)生產(chǎn)對應(yīng)的產(chǎn)品。

  適用情況

  第一種情況是對于某個產(chǎn)品,調(diào)用者清楚地知道應(yīng)該使用哪個具體工廠服務(wù),實例化該具體工廠,生產(chǎn)出具體的產(chǎn)品來。Java Collection中的iterator() 方法即屬于這種情況。

  第二種情況,只是需要一種產(chǎn)品,而不想知道也不需要知道究竟是哪個工廠為生產(chǎn)的,即最終選用哪個具體工廠的決定權(quán)在生產(chǎn)者一方,它們根據(jù)當(dāng)前系統(tǒng)的情況來實例化一個具體的工廠返回給使用者,而這個決策過程這對于使用者來說是透明的。 優(yōu)缺點

  首先,良好的封裝性,代碼結(jié)構(gòu)清晰。一個對象創(chuàng)建是有條件約束的,如一個調(diào)用者需要一個具體的產(chǎn)品對象,只要知道這個產(chǎn)品的類名(或約束字符串)就可以了,不用知道創(chuàng)建對象的艱辛過程,減少模塊間的耦合。

  其次,工廠方法模式的擴展性非常優(yōu)秀。在增加產(chǎn)品類的情況下,只要適當(dāng)?shù)匦薷木唧w的工廠類或擴展一個工廠類,就可以完成“擁抱變化”。例如在我們的例子中,需要增加一個棕色人種,則只需要增加一個BrownHuman類,工廠類不用任何修改就可完成系統(tǒng)擴展。 再次,屏蔽產(chǎn)品類。這一特點非常重要,產(chǎn)品類的實現(xiàn)如何變化,調(diào)用者都不需要關(guān)心,它只需要關(guān)心產(chǎn)品的接口,只要接口保持不表,系統(tǒng)中的上層模塊就不要發(fā)生變化,因為產(chǎn)品類的實例化工作是由工廠類負(fù)責(zé),一個產(chǎn)品對象具體由哪一個產(chǎn)品生成是由工廠類決定的。在數(shù)據(jù)庫開發(fā)中,大家應(yīng)該能夠深刻體會到工廠方法模式的好處:如果使用JDBC連接數(shù)據(jù)庫,數(shù)據(jù)庫從MySql切換到Oracle,需要改動地方就是切換一下驅(qū)動名稱(前提條件是SQL語句是標(biāo)準(zhǔn)語句),其他的都不需要修改,這是工廠方法模式靈活性的一個直接案。 最后,工廠方法模式是典型的解耦框架。高層模塊值需要知道產(chǎn)品的抽象類,其他的實現(xiàn)類都不用關(guān)心,符合迪米特原則,我不需要的就不要去交流;也符合依賴倒轉(zhuǎn)原則,只依賴產(chǎn)品類的抽象;當(dāng)然也符合里氏替換原則,使用產(chǎn)品子類替換產(chǎn)品父類,沒問題!

  3、備忘錄模式

  定義與結(jié)構(gòu)

  備忘錄(Memento)模式又稱標(biāo)記(Token)模式。GOF給備忘錄模式的定義為:在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)。

  從定義可以看出備忘錄模式是專門來存放對象歷史狀態(tài)的,這對于很好的實現(xiàn)undo、redo功能有很大的幫助。所以在命令模式中undo、redo功能可以配合備忘錄模式來實現(xiàn)。

  適用情況

  使用了備忘錄模式來實現(xiàn)保存對象的歷史狀態(tài)可以有效地保持封裝邊界。使用備忘錄可以避免暴露一些只應(yīng)由“備忘發(fā)起角色”管理卻又必須存儲在“備忘發(fā)起角色”之外的信息。把“備忘發(fā)起角色”內(nèi)部信息對其他對象屏蔽起來, 從而保持了封裝邊界。

  但是如果備份的“備忘發(fā)起角色”存在大量的信息或者創(chuàng)建、恢復(fù)操作非常頻繁,則可能造成很大的開銷。

  GOF在《設(shè)計模式》中總結(jié)了使用備忘錄模式的前提:

  1) 必須保存一個對象在某一個時刻的(部分)狀態(tài), 這樣以后需要時它才能恢復(fù)到先前的狀態(tài)。

  2) 如果一個用接口來讓其它對象直接得到這些狀態(tài),將會暴露對象的實現(xiàn)細(xì)節(jié)并破壞對象的封裝性。 優(yōu)缺點

  優(yōu)點:使用備忘錄模式,可以避免暴露一些只應(yīng)由源發(fā)器管理卻又必須存儲在源發(fā)器之外的信息,而且能夠在對象需要時恢復(fù)到先前的狀態(tài)。

  缺點:使用備忘錄可能代價很高。如果源發(fā)器在生成備忘錄時必須復(fù)制并存儲大量的信息,或者客戶非常頻繁地創(chuàng)建備忘錄和恢復(fù)源發(fā)器狀態(tài),可能會導(dǎo)致非常大的開銷。

  1)備忘錄(Memento)角色:備忘錄角色存儲“備忘發(fā)起角色”的內(nèi)部狀態(tài)!皞渫l(fā)起角色”根據(jù)需要決定備忘錄角色存儲“備忘發(fā)起角色”的哪些內(nèi)部狀態(tài)。為了防止“備忘發(fā)起角色”以外的其他對象訪問備忘錄。備忘錄實際上有兩個接口,“備忘錄管理者角色”只能看到備忘錄提供的窄接口——對于備忘錄角色中存放的屬性是不可見的。“備忘發(fā)起角色”則能夠看到一個寬接口——能夠得到自己放入備忘錄角色中屬性。

  2)備忘發(fā)起(Originator)角色:“備忘發(fā)起角色”創(chuàng)建一個備忘錄,用以記錄當(dāng)前時刻它的內(nèi)部狀態(tài)。在需要時使用備忘錄恢復(fù)內(nèi)部狀態(tài)。

  3)備忘錄管理者(Caretaker)角色:負(fù)責(zé)保存好備忘錄。不能對備忘錄的內(nèi)容進行操作或檢查。

  三、小結(jié)

  (一)、問題解決方法及程序?qū)崿F(xiàn)小結(jié)

  我的課程設(shè)計作業(yè)用的是Dreamever,即靜態(tài)網(wǎng)頁。因為本身每種模式的內(nèi)容相對固定,實例代碼以及uml圖片都不會有很大的變動,而且所有模式所涉及的數(shù)據(jù)內(nèi)容不多,不需要數(shù)據(jù)庫支持,所以用靜態(tài)網(wǎng)頁形式顯示既方便又合理。

  在制作網(wǎng)頁的過程中,開始的思路是運用浮動框架,但是因為每種模式代碼普遍比較多,若顯示與框架之內(nèi),整個頁面布局不夠合理,也不美觀,于是,一種模式運用兩個頁面來顯示,即合理又美觀。

  但是軟件也有本身的缺陷,內(nèi)容相對固定,不易改變,在變動后不容易改變。從每個頁面回歸前一個頁面的時候可能會不方便。

  學(xué)習(xí)設(shè)計模式讓我們感覺程序設(shè)計實際上是一件很有意思的事情,23種設(shè)計模式,每種模式又有自己獨特的解決思路,帶有一定的通用性。我們在發(fā)現(xiàn)問題到解決問題這個過程中,常會發(fā)現(xiàn)很多問題是重復(fù)出現(xiàn)的,或是某個問題的變體,外在不同,而本質(zhì)相同,這些問題的本質(zhì)就是模式。設(shè)計模式主要是在大量變成的基礎(chǔ)上加以總結(jié),以減少重復(fù)編碼。

  (二)、 尚未解決的問題及下一步工作思路

  對于模板方法模式的理解還不夠,相關(guān)內(nèi)容還沒有找到,對于課本上c#理解還不夠深入,應(yīng)該學(xué)習(xí)用多種語言實現(xiàn)每種模式,理解其基本思想。

 。ㄈ、 收獲

  在本次課程設(shè)計中,加深了對于23種設(shè)計模式的理解和記憶,更加明白總結(jié)對于學(xué)習(xí)的重要性,在程序開發(fā)中,重復(fù)性的東西是對于資源的一種浪費,所以在以后學(xué)習(xí)中應(yīng)該在更加注重總結(jié)學(xué)習(xí)。本次的課程設(shè)計作業(yè)也能作為以后學(xué)習(xí)的一個工具,在需要復(fù)習(xí)的時候,可以回來查閱總結(jié)的內(nèi)容,一舉兩得。

【設(shè)計模式課程設(shè)計報告】相關(guān)文章:

課程設(shè)計報告07-23

課程設(shè)計報告09-11

翻轉(zhuǎn)課堂模式應(yīng)用文寫作課程設(shè)計探索論文07-03

關(guān)于系統(tǒng)的課程設(shè)計報告08-05

課程設(shè)計報告(15篇)03-28

課程設(shè)計報告15篇03-25

機械設(shè)計基礎(chǔ)課程設(shè)計報告07-03

課程設(shè)計教學(xué)設(shè)計12-24

c++課程設(shè)計實踐報告07-02

課程設(shè)計總結(jié)報告范文07-03

主站蜘蛛池模板: 天天爽夜夜爽 | 国产99免费视频 | 国产成人综合视频 | 成人免费看片 | 国产欧美乱码在线看 | 日韩成人国产精品视频 | 三级亚洲 | 欧美精品第三页 | 超黄网站| 亚欧有色在线观看免费版高清 | 免费视频精品一区二区三区 | 亚洲一区 欧美 | a级黄色毛片三 | 久久精品视频3 | 亚洲视频日韩视频 | 久久精品亚洲欧美日韩久久 | 一a一片一级一片啪啪 | 在线播放a | 2021天天躁狠狠燥 | 日日摸夜夜添夜夜添aa | 一个人看的免费高清视频www | 国产成人人人爆出白浆 | 黑人精品videossex黑人 | 国产成人福利精品视频 | 亚洲欧美一区二区三区在线播放 | 国产激情视频一区二区三区 | 亚洲视频中文字幕 | 中文字幕日韩专区 | 人人看人人做人人爱精品 | 国产在线拍揄自揄视精品不卡 | 欧美性生交xxxxx久久久 | 国产一区二区三区四卡 | 日韩欧美亚洲国产一区二区三区 | 亚洲成年网站 | 毛片三级在线观看 | 婷婷在线五月 | 五月丁色| 亚洲天天做日日做天天看2018 | 午夜黄色| 黄网站在线播放视频免费观看 | 国产免费不卡v片在线观看 国产免费播放一区二区三区 |