設(shè)計(jì)模式范文

時(shí)間:2023-03-28 07:19:03

導(dǎo)語(yǔ):如何才能寫好一篇設(shè)計(jì)模式,這就需要搜集整理更多的資料和文獻(xiàn),歡迎閱讀由公文云整理的十篇范文,供你借鑒。

設(shè)計(jì)模式

篇1

關(guān)鍵詞:C#;設(shè)計(jì)模式;模式

一、模式概述

模式的英文叫做Proxy或Surrogate,中文都可譯成""。所謂,就是一個(gè)人或者一個(gè)機(jī)構(gòu)代表另一個(gè)人或者另一個(gè)機(jī)構(gòu)采取行動(dòng)。在一些情況下,一個(gè)客戶不想或者不能夠直接引用一個(gè)對(duì)象,而對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。

模式是常用的結(jié)構(gòu)型設(shè)計(jì)模式之一,當(dāng)無法直接訪問某個(gè)對(duì)象或訪問某個(gè)對(duì)象存在困難時(shí)可以通過一個(gè)對(duì)象來間接訪問,為了保證客戶端使用的透明性,所訪問的真實(shí)對(duì)象與對(duì)象需要實(shí)現(xiàn)相同的接口。(Proxy)模式給某一個(gè)模式是一種對(duì)象結(jié)構(gòu)型模式。在模式中引入了一個(gè)新的對(duì)象,對(duì)象在客戶端對(duì)象和目標(biāo)對(duì)象之間起到中介的作用,它去掉客戶不能看到的內(nèi)容和服務(wù)或者增添客戶需要的額外的新服務(wù)。

二、模式的種類

如果按照使用目的來劃分,有以下幾種:

遠(yuǎn)程(Remote):為一個(gè)位于不同的地址空間的對(duì)象提供一個(gè)局域代表對(duì)象。這個(gè)不同的地址空間可以是在本機(jī)器中,也可是在另一臺(tái)機(jī)器中。遠(yuǎn)程又叫做大使(Ambassador)。

虛擬(Virtual):根據(jù)需要?jiǎng)?chuàng)建一個(gè)資源消耗較大的對(duì)象,使得此對(duì)象只在需要時(shí)才會(huì)被真正創(chuàng)建。

Copy-on-Write:虛擬的一種。把復(fù)制(克?。┩涎拥街挥性诳蛻舳诵枰獣r(shí),才真正采取行動(dòng)。

保護(hù)(Protect or Access):控制對(duì)一個(gè)對(duì)象的訪問,如果需要,可以給不同的用戶提供不同級(jí)別的使用權(quán)限。

Cache:為某一個(gè)目標(biāo)操作的結(jié)果提供臨時(shí)的存儲(chǔ)空間,以便多個(gè)客戶端可以共享這些結(jié)果。

防火墻(Firewall):保護(hù)目標(biāo),不讓惡意用戶接近。

同步化(Synchronization):使幾個(gè)用戶能夠同時(shí)使用一個(gè)對(duì)象而沒有沖突。

智能引用(Smart Reference):當(dāng)一個(gè)對(duì)象被引用時(shí),提供一些額外的操作,比如將對(duì)此對(duì)象調(diào)用的次數(shù)記錄下來等。

在所有種類的模式中,虛擬(Virtual)、遠(yuǎn)程(Remote)、智能引用(Smart Reference Proxy)和保護(hù)(Protect or Access)是最為常見的模式。

三、遠(yuǎn)程的例子

Achilles是一個(gè)用來測(cè)試網(wǎng)站的安全性能的工具軟件。Achilles相當(dāng)于位于客戶端的的一個(gè)桌面服務(wù)器,在一個(gè)HTTP過程里起到一個(gè)中間人的作用,但是Achilles與通常的服務(wù)器又有不同。Achilles截獲雙向的通信數(shù)據(jù),使得Achilles軟件的用戶可以改變來自和發(fā)往網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù),甚至可以攔截并修改SSL通訊。另外一個(gè)例子就是Windows的快捷方式??旖莘绞绞撬玫某绦虻囊粋€(gè)。

四、模式結(jié)構(gòu)與實(shí)現(xiàn)

模式的結(jié)構(gòu)比較簡(jiǎn)單,其核心是類,為了讓客戶端能夠一致性地對(duì)待真實(shí)對(duì)象和對(duì)象,在模式中引入了抽象層。

模式包含如下三個(gè)角色:

Subject(抽象主題角色):它聲明了真實(shí)主題和主題的共同接口,這樣一來在任何使用真實(shí)主題的地方都可以使用主題,客戶端通常需要針對(duì)抽象主題角色進(jìn)行編程。

Proxy(主題角色):它包含了對(duì)真實(shí)主題的引用,從而可以在任何時(shí)候操作真實(shí)主題對(duì)象;在主題角色中提供一個(gè)與真實(shí)主題角色相同的接口,以便在任何時(shí)候都可以替代真實(shí)主題;主題角色還可以控制對(duì)真實(shí)主題的使用,負(fù)責(zé)在需要的時(shí)候創(chuàng)建和刪除真實(shí)主題對(duì)象,并對(duì)真實(shí)主題對(duì)象的使用加以約束。通常,在主題角色中,客戶端在調(diào)用所引用的真實(shí)主題操作之前或之后還需要執(zhí)行其他操作,而不僅僅是單純調(diào)用真實(shí)主題對(duì)象中的操作。

在實(shí)際開發(fā)過程中,類的實(shí)現(xiàn)比上述代碼要復(fù)雜很多,模式根據(jù)其目的和實(shí)現(xiàn)方式不同可分為很多種類。

參考文獻(xiàn)

[1] 林舒萍,羅鍵.設(shè)計(jì)模式的應(yīng)用研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì). 2005(11)

[2] 陳智.在中使用設(shè)計(jì)模式[J]. 甘肅科技. 2006(10)

篇2

設(shè)計(jì)模式來源于建筑學(xué),是由erichgamma等人在1990年提出的,主要是為了提煉和記錄軟件開發(fā)人員的想法、共性問題和多次驗(yàn)證后的成功解,能夠明確表達(dá)特定上下文的關(guān)系,特性問題和解決方案。就目前而言,軟件設(shè)計(jì)模式指的是設(shè)計(jì)模式和面向?qū)ο笤O(shè)計(jì)方式之間的關(guān)系、優(yōu)劣和其適用范圍。

2設(shè)計(jì)模式的分類

設(shè)計(jì)模式分為行為型、創(chuàng)建型和結(jié)構(gòu)型。

2.1行為型模式

行為型模式在設(shè)計(jì)模式中占有很大的比例,客觀來講,行為型模式能夠滿足大多數(shù)用戶的要求,并且其工作有積極影響。根據(jù)實(shí)際要求及其應(yīng)用,行為型模式包括備忘錄模式和迭代器模式。備忘錄模式指的是在不破壞對(duì)象的情況下,獲得對(duì)象的內(nèi)部狀態(tài),然后進(jìn)行保存。該模式適合工作人員,因?yàn)樗麄兊娜粘9ぷ骱芏?,選用備忘錄模式能夠避免遺漏;迭代器模式指的是提供順序訪問聚合對(duì)象的元素,且不透露內(nèi)部情況,適用于文檔的查找。相對(duì)而言,該模式能夠滿足特殊工作人員的要求,在對(duì)待復(fù)雜工作的時(shí)候能夠有較好的工作態(tài)度,會(huì)趨于理想性工作成績(jī)。

2.2創(chuàng)建型模式

創(chuàng)建型模式要考慮到現(xiàn)階段的發(fā)展社會(huì)。目前經(jīng)濟(jì)和科技發(fā)展迅速,很多情況能夠根據(jù)實(shí)際選擇設(shè)計(jì)模式,固有模式已經(jīng)無法滿足用戶需求,所以出現(xiàn)創(chuàng)建型模式,創(chuàng)建型模式包括原型模式和單例模式。原型模式指的是采用原型實(shí)例對(duì)對(duì)象進(jìn)行制定,在拷貝基礎(chǔ)上創(chuàng)建新對(duì)象,采用原型模式能夠節(jié)省工作時(shí)間,同時(shí)能夠結(jié)合原對(duì)象優(yōu)勢(shì)來工作和設(shè)計(jì);單例模式指的是類型對(duì)應(yīng)實(shí)例,能夠訪問全局問點(diǎn),主觀來講,單例模式有很強(qiáng)的針對(duì)性,并且具有較為高端的水準(zhǔn),能夠完全滿足客戶要求。

2.3結(jié)構(gòu)型模式

結(jié)構(gòu)型模式包括享元模式、組合模式、橋模式、外觀模式、裝飾模式。享元模式能夠?qū)崿F(xiàn)共享細(xì)粒度符號(hào)對(duì)象,能夠解決系統(tǒng)因?yàn)榇嬖诖罅抗残詫?duì)象而影響到系統(tǒng)性能的問題。能夠削減應(yīng)用程序中的對(duì)象,還能降低內(nèi)存占有率,增強(qiáng)性能;組合模式指的將對(duì)象組合成樹形結(jié)構(gòu),表示部門整體關(guān)系,組合模式具有一致性;客戶端能夠一致使用組合結(jié)構(gòu)或者對(duì)象,有利于簡(jiǎn)化客戶端的調(diào)用,還能夠加入新對(duì)象且不用更改代碼,樹形結(jié)構(gòu)比如論壇系統(tǒng)、產(chǎn)品結(jié)構(gòu)或者配置管理系統(tǒng);橋模式是將抽離和現(xiàn)實(shí)部分分離,有獨(dú)立變化;外觀模式指的是為子系統(tǒng)提供高層接口,供其使用;裝飾模式能夠動(dòng)態(tài)的給對(duì)象增加職責(zé),更具靈活性。

3設(shè)計(jì)模式在軟件設(shè)計(jì)中的應(yīng)用

3.1設(shè)計(jì)模式的步驟

設(shè)計(jì)模式在軟件設(shè)計(jì)中應(yīng)用要確定步驟,這樣能夠保證在工作中有積極效果。首先要對(duì)問題進(jìn)行抽象,適當(dāng)?shù)膭澐诸愋?。這個(gè)步驟是設(shè)計(jì)模式在軟件設(shè)計(jì)中應(yīng)用的基礎(chǔ)性步驟,如果沒有進(jìn)行適當(dāng)?shù)某橄蠡?,就算選對(duì)了類型也無法達(dá)到預(yù)期的工作效果。其次,根據(jù)相關(guān)問題類型來選擇合適的設(shè)計(jì)模式,通過深化和研究,設(shè)計(jì)模式的類別有很多,不同的工作有不同的設(shè)計(jì)模式,選擇針對(duì)性模式才能處理好問題。然后要進(jìn)行規(guī)劃問題和匹配模式,這個(gè)是具體性的應(yīng)用環(huán)節(jié),軟件設(shè)計(jì)在每個(gè)方面都需要較高水準(zhǔn),否則在日后很難發(fā)揮軟件性能。然后將選取的模式變體,最后設(shè)計(jì)和細(xì)化軟件體系結(jié)構(gòu),以上就是軟件設(shè)計(jì)中應(yīng)用設(shè)計(jì)模式的具體步驟,要嚴(yán)格執(zhí)行。

3.2設(shè)計(jì)模式的應(yīng)用

選定軟件設(shè)計(jì)模式之后,其具體應(yīng)用方式要有規(guī)范性的準(zhǔn)則,所以必須根據(jù)相關(guān)的程序進(jìn)行。一是要對(duì)設(shè)計(jì)模式有大概的瀏覽,了解具體功能和作用;二是研究協(xié)作和結(jié)構(gòu)部分等重要分支;三是觀察代碼的示例部分;四是選擇模式參與者的姓名,在定義類后,要設(shè)計(jì)專用的操作名稱;這四個(gè)步驟能夠更好的幫助設(shè)計(jì)模式在軟件設(shè)計(jì)中的應(yīng)用,且能夠達(dá)到預(yù)期效果。

4設(shè)計(jì)模式的選取

目前,軟件設(shè)計(jì)一般應(yīng)用于兩個(gè)層面。首先,初步完成系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)后,要對(duì)系統(tǒng)中另外要求的組件和模塊能夠靈活的加入相應(yīng)的設(shè)計(jì)模板。在軟件設(shè)計(jì)的初步階段,要使用設(shè)計(jì)模式對(duì)軟件的體系結(jié)構(gòu)來進(jìn)行相關(guān)設(shè)計(jì)。設(shè)計(jì)模式有一定的復(fù)雜性,所以很難將軟件設(shè)計(jì)模式應(yīng)用到具體軟件設(shè)計(jì)中,一是因?yàn)闆]有有效方式進(jìn)行指導(dǎo),而是沒有真正把握住軟件設(shè)計(jì)模式。更好的選擇軟件設(shè)計(jì)模式要考慮很多方面的因素,第一要考慮到在設(shè)計(jì)中有哪些因素是變化的,第二是要考慮到設(shè)計(jì)模式要如何解決問題的,第三要知道檢新的原因,第四是要了解瀏覽模式的意圖,第五是需要了解相似研究的模式,最后就是要對(duì)他們進(jìn)行相互關(guān)聯(lián)和一定的研究。

5結(jié)語(yǔ)

篇3

【關(guān)鍵詞】設(shè)計(jì)模式;軟件設(shè)計(jì);運(yùn)用

設(shè)計(jì)模式的功能主要是針對(duì)面向?qū)ο筮M(jìn)行設(shè)計(jì)的過程中頻繁出現(xiàn)的設(shè)計(jì)中反復(fù)出現(xiàn)的設(shè)計(jì)問題給出具體且行之有效的解決方案。設(shè)計(jì)模式概念誕生于上世紀(jì)九十年代,是由ErichGamma等人從建筑設(shè)計(jì)領(lǐng)域引入到計(jì)算機(jī)領(lǐng)域內(nèi)的。在當(dāng)下有關(guān)于設(shè)計(jì)模式尚存許多有爭(zhēng)議的話題,但因其可以給出一套完整的軟件設(shè)計(jì)公共語(yǔ)言,使得一些相關(guān)的工作人員能夠分享高端設(shè)計(jì)大師們的寶貴經(jīng)驗(yàn),這種爭(zhēng)議的聲音也就逐漸趨于平靜。說到設(shè)計(jì)模式的作用還遠(yuǎn)不止以上那些,其最為讓人稱道的是軟件的重構(gòu)提供了目標(biāo)。

1設(shè)計(jì)模式相關(guān)概述

追溯設(shè)計(jì)模式的起源其是一種源于建筑學(xué)的概念,被導(dǎo)入到計(jì)算機(jī)領(lǐng)域之后其主要的功能是記錄軟件開發(fā)人員發(fā)覺出的一系列共性問題以及軟件開發(fā)人員經(jīng)驗(yàn)證所得出的成功解,并且理清特定上下文所表現(xiàn)出來的問題及其與之對(duì)應(yīng)的解決方案之間的聯(lián)系。本文所提及的軟件設(shè)計(jì)模式當(dāng)前多是用于明確設(shè)計(jì)模式與另外的面向?qū)ο笤O(shè)計(jì)方式的關(guān)系,并且得出兩者之間所適應(yīng)的范圍等等。

2設(shè)計(jì)模式的具體分類

設(shè)計(jì)模式的分類大體可以分為行為型、創(chuàng)建型以及結(jié)構(gòu)型。其中各個(gè)分支又可以進(jìn)行進(jìn)一步的細(xì)分。行為型模式可細(xì)分為以下幾種:備忘錄模式、迭代器模式、解釋器模式、觀察者模式以及中介者模式。創(chuàng)建型模式可細(xì)分為以下幾種:原型模式、單例式模式、建造模式、抽象工廠以及工廠方法模式。結(jié)構(gòu)型模式可細(xì)分為以下幾種:享元模式、組合模式、橋模式、外觀模式以及裝飾模式。

3設(shè)計(jì)模式在軟件設(shè)計(jì)中的運(yùn)用

當(dāng)下國(guó)內(nèi)的軟件設(shè)計(jì)模式普遍都是運(yùn)用于兩個(gè)層面。首先,待到整個(gè)軟件系統(tǒng)結(jié)構(gòu)搭建初步完成后,可以及時(shí)的加入滿足特殊需求的組件以及給予模塊指定的設(shè)計(jì)使其在功能上更加靈活。軟件設(shè)計(jì)模式本身就具有明顯的復(fù)雜性,這也就使其無法用于相關(guān)具體的軟件設(shè)計(jì),一種原因是由于設(shè)計(jì)模式在運(yùn)用的過程中得不到指導(dǎo),另一種原因是軟件設(shè)計(jì)模式所對(duì)應(yīng)的設(shè)計(jì)師在設(shè)計(jì)的過程中沒能夠正確的把握設(shè)計(jì)方向。3.1設(shè)計(jì)模式的一系列步驟為了使設(shè)計(jì)模式的效果達(dá)到最佳,應(yīng)充分的遵照下列步驟進(jìn)行:(1)抽象化有待進(jìn)行解決的種種問題,類型實(shí)施合理規(guī)劃拆分。(2)針對(duì)問題所屬類型采取適用于這一類型的設(shè)計(jì)模式。(3)規(guī)劃問題并進(jìn)行相應(yīng)的模式匹配。并且把問題與選擇的模式兩者進(jìn)行對(duì)比得出相互間共同存在的特性。針對(duì)需要解決問題所涉及的整體區(qū)域進(jìn)行所有類及其對(duì)應(yīng)的模式進(jìn)行通盤歸納,在此過程中一旦發(fā)現(xiàn)所采用的設(shè)計(jì)模式并不適合立即重新返回第三步進(jìn)行重新設(shè)計(jì)。(4)對(duì)所采用的設(shè)計(jì)模式進(jìn)行變體,所采用的方式可以是對(duì)初始結(jié)構(gòu)拓展或修正,以便及時(shí)的解決當(dāng)中所存在的問題。(5)對(duì)所涉及到的軟件體系進(jìn)行結(jié)構(gòu)細(xì)化使其進(jìn)一步完善。(6)對(duì)設(shè)計(jì)質(zhì)量實(shí)施度量。3.2設(shè)計(jì)模式選取在軟件設(shè)計(jì)過程中設(shè)計(jì)模式的選取至關(guān)重要,選取恰到好處的軟件設(shè)計(jì)模式,一般要充分結(jié)合以下幾點(diǎn)因素。(1)事先總結(jié)出在設(shè)計(jì)進(jìn)行過程中哪些因素是非固定存在即可以變化。(2)充分考慮設(shè)計(jì)模式對(duì)所遇到的問題的解決方式,并且分析所給出的解決方式是否行之有效。(3)明確反復(fù)進(jìn)行檢查的原因是什么,所選用的設(shè)計(jì)模式是否可以很好地解決此類問題。(4)對(duì)設(shè)計(jì)模式的主要方向?qū)嵤g覽。(5)需要對(duì)與目相關(guān)的模式進(jìn)行研究。(6)清晰地了解并掌握模式是如何實(shí)現(xiàn)相互關(guān)聯(lián)的。3.3設(shè)計(jì)模式的應(yīng)用待到軟件設(shè)計(jì)模式選定以后,在執(zhí)行的過程中需要嚴(yán)格遵照科學(xué)方式方法進(jìn)行設(shè)計(jì)。(1)將其所設(shè)計(jì)的模型實(shí)施詳細(xì)瀏覽。(2)深入的對(duì)協(xié)作、結(jié)構(gòu)以及參與者三部分進(jìn)行研究探討。(3)仔細(xì)觀察代碼示例部分以及觀察相關(guān)的一系列案例。(4)選取設(shè)計(jì)模式相關(guān)參與者名字,以使其在全文的運(yùn)用上更具鮮明的意義。(5)對(duì)設(shè)計(jì)中所涉及的類進(jìn)行定義。第六,對(duì)應(yīng)用中的操作名稱采取在定義模式中專用,良好的實(shí)現(xiàn)在設(shè)計(jì)模式中的責(zé)任與協(xié)作的操作。

4結(jié)語(yǔ)

篇4

(1)學(xué)生畢業(yè)設(shè)計(jì)題目大多是虛擬題目,與實(shí)踐環(huán)節(jié)嚴(yán)重脫節(jié),缺少提高應(yīng)用能力的針對(duì)性。(2)學(xué)生就業(yè)壓力較大,對(duì)畢業(yè)設(shè)計(jì)投入的時(shí)間與精力有限。(3)畢業(yè)設(shè)計(jì)被認(rèn)為是個(gè)人能力的體現(xiàn),學(xué)生缺乏整體設(shè)計(jì)和團(tuán)隊(duì)合作思想。(4)傳統(tǒng)的畢業(yè)設(shè)計(jì)教師指導(dǎo)模式和評(píng)價(jià)體系不利于學(xué)生創(chuàng)新精神的培養(yǎng)。

2基于應(yīng)用型、創(chuàng)新性人才培養(yǎng)的設(shè)計(jì)學(xué)專業(yè)畢業(yè)設(shè)計(jì)模式探索

2.1優(yōu)化選題模式隨著社會(huì)日新月異的變化,畢業(yè)設(shè)計(jì)作為培養(yǎng)合格人才的主要教學(xué)手段,更要適應(yīng)時(shí)代的發(fā)展接受新的挑戰(zhàn),深入探討與研究現(xiàn)狀,為培育新時(shí)代的設(shè)計(jì)工作者提供更好地教育平臺(tái)。通過多年的教學(xué)經(jīng)驗(yàn)以及與其他院校的交流,發(fā)現(xiàn)設(shè)計(jì)學(xué)專業(yè)畢業(yè)設(shè)計(jì)存在以下一些問題:(1)關(guān)注學(xué)生畢業(yè)設(shè)計(jì)選題的指導(dǎo)工作,通過開展關(guān)于畢業(yè)設(shè)計(jì)如何選題的講座、座談等形式,提高學(xué)生對(duì)于畢業(yè)設(shè)計(jì)的重視程度,有效地避免了選題的盲目性。(2)學(xué)生畢業(yè)設(shè)計(jì)的選題可以來自于指導(dǎo)教師的科研項(xiàng)目或產(chǎn)學(xué)研的課題,這樣既培養(yǎng)了學(xué)生理論聯(lián)系實(shí)踐的能力,又激發(fā)了學(xué)生對(duì)于今后工作的積極性,同時(shí)為指導(dǎo)老師的課題取得一定的科研成果。(3)以相關(guān)專業(yè)的國(guó)內(nèi)外競(jìng)賽為畢業(yè)設(shè)計(jì)題目,加強(qiáng)了學(xué)生對(duì)于市場(chǎng)的了解,有效地防止學(xué)生花費(fèi)大量的時(shí)間與精力完成一些虛擬的設(shè)計(jì);同時(shí)也為教師積累一些指導(dǎo)設(shè)計(jì)競(jìng)賽的實(shí)踐經(jīng)驗(yàn),為以后的教學(xué)指導(dǎo)打下堅(jiān)實(shí)的基礎(chǔ);又能為提升學(xué)院的知名度、帶動(dòng)低年級(jí)學(xué)生形成良好的學(xué)習(xí)氛圍、學(xué)術(shù)環(huán)境。(4)題目由學(xué)生自定,一方面學(xué)生可以依據(jù)自己就業(yè)的單位或已有意向的單位為背景,盡快熟悉將要工作單位的實(shí)際情況,鼓勵(lì)學(xué)生的畢業(yè)設(shè)計(jì)題目與單位項(xiàng)目相結(jié)合,或者運(yùn)用自己的知識(shí)為單位的創(chuàng)新提供一些設(shè)計(jì)。這樣既滿足了對(duì)學(xué)生能力的鑒定,又使學(xué)生盡快的融入自己的工作。另一方面學(xué)生可以依據(jù)自己的興趣愛好,通過開題報(bào)告形式來陳述自己對(duì)選題的認(rèn)識(shí)與理解,以及對(duì)選題所做相關(guān)的前期準(zhǔn)備,特別是對(duì)自擬題目創(chuàng)新性、可行性等進(jìn)行分析,指導(dǎo)教師要在內(nèi)容、形式、可行性等多方面嚴(yán)格審核,使學(xué)生的畢業(yè)設(shè)計(jì)在專業(yè)設(shè)計(jì)范圍內(nèi)與自己的興趣相結(jié)合,展示學(xué)生專業(yè)創(chuàng)新性與個(gè)性化設(shè)計(jì)相結(jié)合的能力。2.2 開展“導(dǎo)師負(fù)責(zé)、聯(lián)合指導(dǎo)”的模式由于選題注重從市場(chǎng)的實(shí)際需求出發(fā),因此采用學(xué)校導(dǎo)師負(fù)責(zé)和企業(yè)聯(lián)合指導(dǎo)的方式,對(duì)學(xué)生設(shè)計(jì)能力的提高和對(duì)市場(chǎng)現(xiàn)狀的分析、就業(yè)能力的提升都具有重要意義。這種模式克服了傳統(tǒng)畢業(yè)設(shè)計(jì)虛擬化的缺點(diǎn),有利于鍛煉學(xué)生與企業(yè)間的溝通合作能力,便于學(xué)生進(jìn)行調(diào)研實(shí)習(xí),了解相關(guān)行業(yè)最新的發(fā)展現(xiàn)狀,為今后的就業(yè)提供實(shí)踐經(jīng)驗(yàn);同時(shí)也有效地保證學(xué)生畢業(yè)設(shè)計(jì)進(jìn)度和質(zhì)量,為學(xué)生更快、更好地適應(yīng)社會(huì)奠定了良好的基礎(chǔ)。對(duì)于指導(dǎo)老師而言,應(yīng)具有教師和設(shè)計(jì)師的雙師角色,既有利于最新設(shè)計(jì)信息和技術(shù)的交流與溝通,又提高了教師理論聯(lián)系實(shí)際的應(yīng)用價(jià)值,為今后的設(shè)計(jì)課程指導(dǎo)打下了良好的基礎(chǔ)。與此同時(shí),通過各種渠道實(shí)時(shí)掌握設(shè)計(jì)類專業(yè)國(guó)內(nèi)外前沿理論和業(yè)內(nèi)動(dòng)態(tài),同兄弟院校、企事業(yè)單位、設(shè)計(jì)公司多多交流,從畢業(yè)設(shè)計(jì)指導(dǎo)過程中相關(guān)交流、總結(jié)指導(dǎo)方式方法,為培育出應(yīng)用型、創(chuàng)新性人才做充足的準(zhǔn)備。學(xué)院也可利用與企業(yè)良好的合作關(guān)系,真正了解市場(chǎng)的人才動(dòng)態(tài)需求,對(duì)學(xué)生進(jìn)行針對(duì)性的培養(yǎng),縮短學(xué)校與社會(huì)的差距,培養(yǎng)出更切合社會(huì)需求的人才。2.3 培養(yǎng)團(tuán)隊(duì)合作的設(shè)計(jì)模式設(shè)計(jì)學(xué)專業(yè)涉及工業(yè)設(shè)計(jì)、廣告設(shè)計(jì)、環(huán)境藝術(shù)設(shè)計(jì)等多個(gè)領(lǐng)域,跨越藝術(shù)、機(jī)械、建筑環(huán)境等多學(xué)科,同時(shí)也包含材料、結(jié)構(gòu)、工藝、市場(chǎng)、銷售等相關(guān)知識(shí),因此從整體的教學(xué)程度而言,應(yīng)力爭(zhēng)把學(xué)生培養(yǎng)成具有應(yīng)用型、創(chuàng)新性的多元化的復(fù)合型人才。比如一個(gè)完整的市場(chǎng)產(chǎn)品設(shè)計(jì)過程需要有市場(chǎng)調(diào)研、設(shè)計(jì)定位、草圖概念設(shè)計(jì)階段、設(shè)計(jì)材料學(xué)期、結(jié)構(gòu)力學(xué)分析、工藝選取、優(yōu)化設(shè)計(jì)、包裝、銷售等多方面的人才相互協(xié)作完成,因此學(xué)生可根據(jù)四年的知識(shí)積累及自己的興趣和學(xué)習(xí)情況,可跨院系由3~5人組成跨學(xué)院間的創(chuàng)新團(tuán)隊(duì)模式,各個(gè)學(xué)院的指導(dǎo)教師共同協(xié)作來共同完成一項(xiàng)畢業(yè)設(shè)計(jì)項(xiàng)目,既有利于把設(shè)計(jì)做的更深入和全面,又能較好地培養(yǎng)學(xué)生的創(chuàng)新和團(tuán)隊(duì)合作精神。2.4 畢業(yè)設(shè)計(jì)的新模式與評(píng)定為了全方位地鍛煉學(xué)生,并檢驗(yàn)學(xué)生運(yùn)用所學(xué)知識(shí)從事研究、寫作、創(chuàng)意和設(shè)計(jì)制作的綜合能力,根據(jù)不同的專業(yè)特點(diǎn),確定新型畢業(yè)論文/設(shè)計(jì)的項(xiàng)目模式為:A+Dx[其中A:畢業(yè)論文(廣告學(xué))D:畢業(yè)設(shè)計(jì)(依據(jù)專業(yè)進(jìn)行詳細(xì)分類)]和Bx+C[其中B:畢業(yè)設(shè)計(jì)(依據(jù)專業(yè)進(jìn)行詳細(xì)分類)C:策劃書或設(shè)計(jì)說明書(工業(yè)設(shè)計(jì)、廣告設(shè)計(jì)、環(huán)境藝術(shù)設(shè)計(jì)專業(yè))]。由于專業(yè)特性而選定的A+Dx和Bx+C模式應(yīng)分別設(shè)定成績(jī)?cè)u(píng)定方式A+Dx模式以A80%+Dx20%評(píng)定;Bx+C模式以Bx70%+c30%評(píng)定。其中:A=A11+A12+A13+A14。A11:畢業(yè)論文寫作過程考核≤15分;A12:畢業(yè)論文質(zhì)量由指導(dǎo)教師評(píng)定≤25分;A13:畢業(yè)論文質(zhì)量由評(píng)閱教師評(píng)定≤20分;A14:畢業(yè)論文答辯成績(jī)≤40分,Bx=B11+B12+B13+B14+B15;B11:畢業(yè)設(shè)計(jì)過程考核≤10分;B12:畢業(yè)設(shè)計(jì)質(zhì)量由指導(dǎo)教師評(píng)定≤15分;B13:畢業(yè)設(shè)計(jì)質(zhì)量由評(píng)閱教師評(píng)定≤20分;B14:畢業(yè)設(shè)計(jì)展示成績(jī)≤15分;B15:畢業(yè)設(shè)計(jì)答辯成績(jī)≤40分;C:策劃書或設(shè)計(jì)說明書成績(jī)≤100分,Dx=D11+D12;D11:畢業(yè)設(shè)計(jì)過程考核≤40分;D12:畢業(yè)設(shè)計(jì)質(zhì)量由指導(dǎo)教師評(píng)定≤60分。特別是針對(duì)在國(guó)內(nèi)外參加競(jìng)賽獲獎(jiǎng)的具有較高的創(chuàng)新能力的同學(xué),在評(píng)分標(biāo)準(zhǔn)鐘加入創(chuàng)新能力評(píng)價(jià)因子,視工作量的情況予以獎(jiǎng)勵(lì)。

3結(jié)論

篇5

關(guān)鍵詞:.Net;對(duì)象池;設(shè)計(jì)模式

中圖分類號(hào):TP311.132.4 文獻(xiàn)標(biāo)志碼:A

Design on object pool using design pattern and .Net

WANG Xiang

(Graduate School,Chinese Academy of Sci.,Beijing 100049,China)

Abstract:To manage the resources used by application under execution efficiently,an object pool is used to reduce the total resource usage by sharing object instance between invokes dynamically according to the states of invoked objects. With the .Net configuration and cache types,the prototype implements instance dispatch and centralized management by state pattern and design of pooling object interface. The unit-tests demonstrate that the prototype can dynamically initialize,reuse and recycle timeout instances according to configuration. It can provide reference for the design of similar modules.

Key words:.Net;object pool;design pattern

0 引 言

應(yīng)用運(yùn)行過程中經(jīng)常會(huì)根據(jù)調(diào)用要求,生成指定類型的對(duì)象實(shí)例.對(duì)于復(fù)雜類型的頻繁構(gòu)造會(huì)消耗較多的系統(tǒng)資源,影響應(yīng)用運(yùn)行效率;對(duì)于直接與用戶交互的業(yè)務(wù)邏輯對(duì)象,由于客戶端調(diào)用的隨機(jī)性,為每個(gè)會(huì)話單獨(dú)保存對(duì)象實(shí)例會(huì)增加應(yīng)用邏輯層系統(tǒng)開銷.針對(duì)上面兩種情況,可以設(shè)計(jì)1個(gè)專門管理對(duì)象實(shí)例的對(duì)象池(ObjectPool),由它間接控制對(duì)象實(shí)例的構(gòu)造、激活、失效和釋放等過程.對(duì)象池具有如下運(yùn)行特性:(1)根據(jù)調(diào)用動(dòng)態(tài)地生成對(duì)象實(shí)例;(2)根據(jù)已經(jīng)池化實(shí)例的使用情況,將空閑實(shí)體直接提供給新的調(diào)用,減少重復(fù)創(chuàng)建的過程.

此外,隨著.Net和Java等具有自動(dòng)回收機(jī)制[1]平臺(tái)的出現(xiàn),多數(shù)情況下無用實(shí)例的回收都由平臺(tái)自動(dòng)完成,但由于回收機(jī)制運(yùn)行優(yōu)先級(jí)一般都很低,在密集業(yè)務(wù)調(diào)用過程中常常會(huì)因?yàn)闊o法獲得執(zhí)行機(jī)會(huì)導(dǎo)致系統(tǒng)資源快速膨脹,因此借助對(duì)象池的守衛(wèi)(Guard)控制和實(shí)例重用可以比較有效地防止上述情況發(fā)生.設(shè)計(jì)模式[2]描述軟件設(shè)計(jì)過程中某類常見問題的一般性解決方法,其中的創(chuàng)建型模式對(duì)于設(shè)計(jì)對(duì)象池管理和創(chuàng)建類型實(shí)例有借鑒作用.采用泛型[3]一方面是為了提高對(duì)象池的執(zhí)行效率,尤其當(dāng)算法參數(shù)類型為值型參數(shù)時(shí),可以減少重復(fù)裝箱―拆箱帶來的性能損失;另一方面將類型檢查提前到編譯過程.

1 概要設(shè)計(jì)

1.1 整體邏輯結(jié)構(gòu)

根據(jù)對(duì)象池的運(yùn)行特征,設(shè)計(jì)上先劃分出如圖1所示的幾個(gè)模塊.

圖 1 對(duì)象池的總體結(jié)構(gòu)

通過幾個(gè)主要模塊間的協(xié)作,實(shí)現(xiàn)運(yùn)行態(tài)的類型實(shí)例管理,分工如下:(1)Listener模塊用于與客戶程序的交互.一方面將客戶程序需要使用的類型信息通知Dispatch,另一方面要把加工好的對(duì)象實(shí)例反饋給客戶程序,實(shí)現(xiàn)對(duì)象池對(duì)客戶程序的透明.(2)Dispatch模塊的主要工作是調(diào)度,根據(jù)Listener發(fā)送的類型要求從ObjectCache中檢查是否有已經(jīng)構(gòu)造完成但沒有激活的實(shí)例,如果有則直接把實(shí)例反饋給Listener;否則通知ObjectBuilder創(chuàng)建1個(gè)實(shí)例,在其注冊(cè)到ObjectCache之后,再反饋給Listener.(3)ObjectBuilder模塊根據(jù)Dispatch輸入類型,參考其配置參數(shù)構(gòu)造類型實(shí)例.(4)Configuration Management模塊將外部配置信息翻譯成配置對(duì)象,供ObjectBuilder參考.(5)Lease Management模塊根據(jù)池化類型的控制參數(shù),參考ObjectCache中緩沖實(shí)例的使用情況,回收和清理超期對(duì)象.(6)ObjectCache模塊根據(jù)Dispatch調(diào)度情況,注冊(cè)并登記相關(guān)信息;把ObjectBuilder加工的新實(shí)例分類之后,注冊(cè)到緩存.

1.2 池化對(duì)象的狀態(tài)轉(zhuǎn)換

圖2描述對(duì)象池管理下對(duì)象實(shí)體的狀態(tài)特征.

圖 2 池化對(duì)象的狀態(tài)轉(zhuǎn)換

由于池化對(duì)象是否可以執(zhí)行某些功能要依賴于自身狀態(tài),同時(shí)實(shí)例自身狀態(tài)的變化也依賴于池化對(duì)象的操作,因此產(chǎn)生雙向依賴.為了解耦狀態(tài)類型與池化類型間的雙向耦合,需要借鑒State模式實(shí)現(xiàn)池化對(duì)象具有自動(dòng)狀態(tài)特征的執(zhí)行方式.

1.3 基本抽象實(shí)體類型定義

基本抽象實(shí)體類型靜態(tài)結(jié)構(gòu)見圖3.

圖 3 基本抽象實(shí)體類型靜態(tài)結(jié)構(gòu)

IPoolableConfiguration接口定義可池化類型配置要求,包括最大池化容量屬性(Max)和最長(zhǎng)閑置時(shí)間屬性(Timeout)(超時(shí)后會(huì)被Lease Management自動(dòng)回收).

IPoolable接口定義可池化類型的基本特征,包括GUID編號(hào)、類型信息(Type)、創(chuàng)建時(shí)間(CreateTime)和最近訪問時(shí)間(AccessedTime).為了執(zhí)行上具有自動(dòng)狀態(tài)特征,還有1組與狀態(tài)管理相關(guān)的屬性和方法.

IState接口定義狀態(tài)控制類型的特征,包括是否可以執(zhí)行屬性(Executable)和是否沒被其他程序占用屬性(Unoccupied).

PoolableBase和StateBase分別為實(shí)現(xiàn)IPoolable接口和IState接口的抽象基類.

2 詳細(xì)設(shè)計(jì)

在進(jìn)行完整對(duì)象池總體靜態(tài)結(jié)構(gòu)和狀態(tài)轉(zhuǎn)換設(shè)計(jì)后,下面細(xì)化每個(gè)模塊的設(shè)計(jì).

2.1 配置信息管理

圖4為池化對(duì)象配置Schema.

參考.Net Framework對(duì)自定義配置節(jié)(ConfigurationSection)的要求,將對(duì)象池配置根節(jié)點(diǎn)命名為,并在.Net配置文件根節(jié)點(diǎn)下的注冊(cè).之下是定義每個(gè)具體池化類型的配置元素集合,每個(gè)配置元素對(duì)應(yīng)IPoolableConfiguration接口的有Type,Max和Timeout屬性.為了隔離ObjectBuilder部分對(duì)具體池化類型的訪問,增加ConfigurationManager類以中介者模式(Intermediator Pattern)包裝(Facade Pattern)對(duì)配置文件的訪問,ObjectBuilder部分輸入類型信息,ConfigurationManager反饋相應(yīng)的配置接口.圖5為配置信息管理的靜態(tài)結(jié)構(gòu).

圖 4 池化對(duì)象配置Schema(XSD)

圖 5 配置信息管理的靜態(tài)結(jié)構(gòu)

為了避免重復(fù)訪問配置文件帶來的效率問題,ConfigurationManager采用單件模式(Singleton Pattern),在靜態(tài)構(gòu)造過程中讀取配置文件,并完成配置文件相關(guān)XML元素到配置實(shí)體對(duì)象的映射過程.所有對(duì)象化后的IPoolableConfiguration實(shí)例保存在ConfigurationManager緩沖中.客戶程序在完成加載過程后通過訪問ConfugurationManager靜態(tài)屬性Instance的GetConfiguration方法獲得每個(gè)池化類型的配置信息(具體見圖6和7).

圖 6 ConfigurationManager的加載過程

圖 7 客戶程序經(jīng)ConfigurationManager獲得配置信息過程

2.2 用ObjectBuilder創(chuàng)建池化對(duì)象實(shí)例

為了簡(jiǎn)化根據(jù)IPoolable類型用Dispatch生成實(shí)例的創(chuàng)建過程,ObjectBuilder沒有提供創(chuàng)建者模式(Builder Pattern)對(duì)于每個(gè)部件的加工方法,僅提供1個(gè)BuildUp流型方法生成指定類型T的實(shí)例.為了限制T的類型,采用.Net提供的類型參數(shù)約束聲明ObjectBuilder類:

public abstract Class ObjectBuilder

where T : Class,IPoolable,new(){

/// 創(chuàng)建指定類型實(shí)例

public abstract T BuildUp();

}

ObjectBuilder的靜態(tài)結(jié)構(gòu)見圖8.

圖 8 ObjectBuilder的靜態(tài)結(jié)構(gòu)

2.3 池化對(duì)象實(shí)例的緩沖和銷毀管理

如上所述,對(duì)象池的主要性能優(yōu)勢(shì)在于:一方面可以通過重用已有實(shí)例減輕頻繁構(gòu)造的負(fù)載,另一方面通過共享實(shí)例減少總體內(nèi)存占用,因此緩沖機(jī)制是對(duì)象池的核心組成.此外,業(yè)務(wù)上經(jīng)常存在峰值調(diào)用,峰值過后如果緩沖的對(duì)象過多或過長(zhǎng)時(shí)間不用,也會(huì)額外占用很多系統(tǒng)資源,因此需要1個(gè)緩沖對(duì)象的銷毀機(jī)制(見圖9).

圖 9 ObjectPool的緩沖和自動(dòng)銷毀機(jī)制

邏輯結(jié)構(gòu)上兩部分分別由ObjectCache和Lease Management完成,為了實(shí)現(xiàn)緩沖的自動(dòng)管理,設(shè)計(jì)上將兩塊合并,將Lease Management作為1個(gè)獨(dú)立的后臺(tái)線程池,并以時(shí)鐘(Timer)方式作為ObjectCache的內(nèi)部成員,按照每個(gè)IPoolable類型的IPoolableConfiguration信息定時(shí)進(jìn)行回收檢查.由于.Net的System.Threading.Timer類型作為1個(gè)獨(dú)立的線程,通過共享的.Net CLR線程池實(shí)現(xiàn)異步自動(dòng)觸發(fā)調(diào)用,因此Lease Management使用該類實(shí)現(xiàn),并將Timer和IList包裝為SizeRestrictedList.

ObjectCache采用享元模式(Flyweight Pattern)實(shí)現(xiàn),由于不同池化類型可以配置獨(dú)立的IPoolableConfiguration,因此ObjectCache通過調(diào)度一系列池化類型列表(SizeRestrictedList)實(shí)現(xiàn)集中管理所有可池化類型池化后的實(shí)例,每個(gè)類型列表的信息(類型、列表實(shí)例)登記在ObjectCache的類型注冊(cè)表(Registry)中.

2.4 ObjectPool的調(diào)度機(jī)制

為了隔離客戶程序?qū)τ诔鼗瘜?duì)象實(shí)例的創(chuàng)建、引用和操作等過程,確??蛻舫绦蚩梢浴鞍葱琛笆褂镁唧w池化類型實(shí)例,在ObjectCache和ObjectBuilder上層增加1個(gè)Dispatch,工作模式如下:如果ObjectCache可以獲得1個(gè)現(xiàn)成的沒有被其他程序占用的池化對(duì)象實(shí)例,直接將其返回;否則根據(jù)該種類型的池化容量配置,在不超量的情況下,通知ObjectBuilder創(chuàng)建1個(gè)新的實(shí)例,將其緩沖后再返回;如果既無可用緩沖實(shí)例也不能繼續(xù)創(chuàng)建新的實(shí)例,則返回null.考慮到ObjectPool的維護(hù)需要,Dispatch增加1個(gè)靜態(tài)Available屬性,前端Listener可以根據(jù)Dispatch的可用性決定是否為客戶程序提供對(duì)象池服務(wù)(見圖10).

圖 10 ObjectPool的調(diào)度機(jī)制

2.5 ObjectPool提供給客戶程序的偵聽機(jī)制

Listener作為客戶程序與ObjectPool交互的,通過詢問Dispatch的Available屬性判斷是否可以對(duì)外提供服務(wù)(見圖11).設(shè)計(jì)上用流型實(shí)體類型PoolListener (T : IPoolable)完成與不同池化類型的交互,其職責(zé)T Acquire()方法用于獲得特定池化類型T的實(shí)例(重用1個(gè)既有實(shí)例或引用1個(gè)新構(gòu)造的實(shí)例).

圖 11 ObjectPool服務(wù)于客戶程序的Listener機(jī)制

3 實(shí)驗(yàn)環(huán)境準(zhǔn)備及實(shí)驗(yàn)結(jié)果分析

3.1 測(cè)試實(shí)體類及配置信息

根據(jù)上述設(shè)計(jì),完成1個(gè)ObjectPool的原型庫(kù),為驗(yàn)證其有效性,設(shè)計(jì)如圖12所示的兩個(gè)測(cè)試實(shí)體類用于檢查ObjectPool各設(shè)計(jì)目標(biāo)是否可以達(dá)成.測(cè)試數(shù)據(jù)準(zhǔn)備見表1.

圖 12 測(cè)試實(shí)體類型

3.2 測(cè)試過程及測(cè)試結(jié)果分析

測(cè)試采用.Net測(cè)試工程(Test Project),通過斷言(Assert)方式對(duì)測(cè)試程序進(jìn)行調(diào)試,最終可以通過的測(cè)試用例如下.

3.2.1 緩沖池容量測(cè)試

PoolListener listener =

new PoolListener();

AdvancedCalculator obj1 = listener.Acquire();

obj1.Activate();

Assert.IsNotNull(obj1);

AdvancedCalculator obj2 = listener.Acquire();

obj2.Activate();

Assert.IsNotNull(obj2);

AdvancedCalculator obj3 = listener.Acquire();

Assert.IsNull(obj3);

該測(cè)試確認(rèn)ObjectPool可以根據(jù)配置信息控制實(shí)例數(shù)量.

3.2.2 實(shí)例重用測(cè)試

PoolListener listener =

new PoolListener();

AdvancedCalculator obj1 = listener.Acquire();

obj1.Activate();

AdvancedCalculator obj2 = listener.Acquire();

obj2.Activate();

obj1.Deactivate();

AdvancedCalculator obj3 = listener.Acquire();

Assert.IsNotNull(obj3);

Assert.AreEqual(obj1.Guid,obj3.Guid);

Assert.AreEqual(obj3.Multiple(2,2),2 * 2);

該測(cè)試確認(rèn)ObjectPool將obj1已經(jīng)聲明暫時(shí)不用的實(shí)例交給obj3使用.3.2.3 自動(dòng)緩沖超時(shí)機(jī)制測(cè)試

PoolListener listener =

new PoolListener();

AdvancedCalculator obj1 = listener.Acquire();

obj1.Activate();

string guid = obj1.Guid;

System.Threading.Thread.Sleep(5000);// > timeout

obj1 = listener.Acquire();

Assert.AreNotEqual(guid,obj1.Guid);

結(jié)合重用測(cè)試的結(jié)果,該測(cè)試確認(rèn)對(duì)于沒有激活的obj1在超過超時(shí)時(shí)間等待后,也因之前引用的實(shí)例被回收,重新訪問ObjectPool后獲得重新創(chuàng)建的實(shí)例.

3.2.4 多類型系統(tǒng)管理能力測(cè)試

PoolListener l1 =

new PoolListener();

AdvancedCalculator advanced = l1.Acquire();

Assert.IsNotNull(advanced);

PoolListener l2 =

new PoolListener();

SimpleCalculator simple = l2.Acquire();

simple.Activate();

Assert.IsNotNull(simple);

該測(cè)試確認(rèn)ObjectPool有可以集中管理多個(gè)可池化類型能力.

3.2.5 分 析

經(jīng)過上述4個(gè)測(cè)試,確認(rèn)ObjectPool原型已具有可配置、可重用實(shí)例、可自動(dòng)回收并管理多個(gè)池化類型的功能.

4 結(jié)束語(yǔ)

通過在對(duì)象池設(shè)計(jì)中采用合適的設(shè)計(jì)模式方法,確保其可以更加有效地調(diào)度池化實(shí)例,向客戶程序透明構(gòu)造過程,并對(duì)實(shí)例狀態(tài)進(jìn)行管理.

實(shí)際工程中,由于對(duì)象池往往需要被多個(gè)客戶程序調(diào)用,需要有效的并發(fā)機(jī)制配合,后續(xù)研究中將著重對(duì)原型的并發(fā)能力進(jìn)行調(diào)整.

參考文獻(xiàn):

[1] TROELSEN A. Pro C# 2005 and the .Net 2.0 platform[M]. 3版. A Press,2005.

篇6

結(jié)構(gòu)型模式充分的利用了接口的概念,這里的接口,是指抽象,通過這種抽象機(jī)制來組合類,從而實(shí)現(xiàn)所需的功能。結(jié)構(gòu)型模式包括了適配器模式、外觀模式、組合模式、橋接模式和裝飾器模式。我們還可以根據(jù)可見性和依賴程度將設(shè)計(jì)模式分為broadexposure和isolateduse兩類。Broadexposure設(shè)計(jì)模式可以簡(jiǎn)單的理解為開放型模式,由于過度的開放,會(huì)導(dǎo)致客戶代碼與其產(chǎn)生依賴。因此,使用這種設(shè)計(jì)模式的決定不能輕易取消,否則將會(huì)產(chǎn)生十分巨大的開銷。相對(duì)于broadexposure模式,Isolateduse則將細(xì)節(jié)隱藏起來,對(duì)客戶代碼基本透明,避免了依賴性而導(dǎo)致的外部耦合,從而使得程序更加穩(wěn)定。

二、設(shè)計(jì)模式在實(shí)際中的應(yīng)用

設(shè)計(jì)模式的理解和使用并非朝夕之功,一般會(huì)經(jīng)歷三個(gè)階段:第一個(gè)階段,為了模式而模式。在這個(gè)階段里程序設(shè)計(jì)人員剛剛開始接觸設(shè)計(jì)模式,并努力在自己的代碼中有意的加入設(shè)計(jì)模式,但是由于對(duì)設(shè)計(jì)模式的理解不足和經(jīng)驗(yàn)的欠缺,往往不能很好的達(dá)到預(yù)期的目的,需要通過大量的失敗和不斷的嘗試積累經(jīng)驗(yàn);第二個(gè)階段,我們可以稱之為非最優(yōu)化模式。在這個(gè)階段里,程序設(shè)計(jì)人員對(duì)模式已經(jīng)有了一定的理解,而且可以自如的在程序設(shè)計(jì)中應(yīng)用一些設(shè)計(jì)模式理念,但是仍有考慮不周之處,可以看作是上一階段的進(jìn)階階段;第三個(gè)階段,無模式階段。即在程序設(shè)計(jì)過程中并沒有可以追求所謂的模式,而是自然而然將設(shè)計(jì)模式的理念融入到其設(shè)計(jì)當(dāng)中,該階段可謂是設(shè)計(jì)模式的最高境界。但目前大多數(shù)程序設(shè)計(jì)人員尚處于第二階段甚至第一階段當(dāng)中,如何把設(shè)計(jì)模式的采用和日益臨近的工期、緊縮的預(yù)算及資源相結(jié)合,是我們面臨的主要問題。以下提供三個(gè)建議:

1.良好的溝通和培訓(xùn)

在程序開發(fā)過程中,必須保持良好的溝通機(jī)制,而且應(yīng)當(dāng)是跨團(tuán)隊(duì),甚至是跨項(xiàng)目的,從而預(yù)防相對(duì)獨(dú)立或者唯一的實(shí)現(xiàn)方式。另外通過強(qiáng)化培訓(xùn),加強(qiáng)對(duì)設(shè)計(jì)模式的理解并提高應(yīng)用水平。在學(xué)習(xí)設(shè)計(jì)模式的同時(shí)也必須緊記各種反模式,以避免重蹈覆轍。

2.設(shè)計(jì)模式的評(píng)審

設(shè)計(jì)模式并非萬(wàn)試萬(wàn)靈的,當(dāng)我們選擇了不當(dāng)?shù)哪J降臅r(shí)候,它可能給我們的項(xiàng)目帶來打擊。因此在使用設(shè)計(jì)模式之前,我們需要進(jìn)行評(píng)審。正式的評(píng)審一般適用于大規(guī)模的框架性的設(shè)計(jì)模式,而對(duì)于代碼開發(fā)過程中使用到的設(shè)計(jì)模式,建議通過代碼的走查或者代碼審計(jì)等方式完成評(píng)審。

3.實(shí)現(xiàn)重用和程序的穩(wěn)定

篇7

“創(chuàng)意木質(zhì)產(chǎn)品設(shè)計(jì)與制作”是專業(yè)模塊課程,圍繞提升學(xué)生木質(zhì)產(chǎn)品設(shè)計(jì)以及處理產(chǎn)品與用戶、環(huán)境關(guān)系的專業(yè)設(shè)計(jì)能力,落實(shí)專業(yè)人才培養(yǎng)方案和課程標(biāo)準(zhǔn),對(duì)接企業(yè)產(chǎn)品設(shè)計(jì)師崗位職業(yè)標(biāo)準(zhǔn),基于學(xué)情分析,組織教學(xué)。課程以合作企業(yè)工作任務(wù)為導(dǎo)向,基于木質(zhì)產(chǎn)品設(shè)計(jì)開發(fā)工作流程設(shè)置教學(xué)環(huán)節(jié),通過直觀演示法、現(xiàn)場(chǎng)教學(xué)法、任務(wù)驅(qū)動(dòng)法、理實(shí)一體化教學(xué)法開展教學(xué)活動(dòng)。通過前導(dǎo)課程學(xué)習(xí)具備三維參數(shù)化軟件(Creo)、三維造型軟件(Rhino)和渲染軟件(Keyshot)繪圖技能,掌握設(shè)計(jì)基礎(chǔ)理論、造型方法和材料工藝知識(shí),但未進(jìn)行以任務(wù)為導(dǎo)向、基于企業(yè)工作流程的綜合設(shè)計(jì)實(shí)訓(xùn),無法將木質(zhì)產(chǎn)品的造型理論、設(shè)計(jì)方法和設(shè)計(jì)流程有機(jī)融合。基于上述內(nèi)容,制訂本課程的項(xiàng)目化教學(xué)實(shí)施方案(如圖1)。教學(xué)實(shí)施方案分為課前、課中、課后三個(gè)環(huán)節(jié)。課前,教師在職教云平臺(tái)上教案和教學(xué)資源,要求學(xué)生按照教案內(nèi)容,在規(guī)定時(shí)間內(nèi)觀看微課、預(yù)習(xí)課件、參與測(cè)試、反饋疑惑。這就要求教師合理劃分課堂學(xué)習(xí)內(nèi)容,整合知識(shí)點(diǎn)制作微課,設(shè)計(jì)任務(wù)和試題,并上傳到職教云平臺(tái),充分利用學(xué)生的碎片化學(xué)習(xí)時(shí)間,特別是要求其及時(shí)反饋疑惑。教師可以集中精力收集常見問題,及時(shí)調(diào)整課堂教學(xué)的內(nèi)容或方法。例如,“創(chuàng)意木質(zhì)產(chǎn)品設(shè)計(jì)與制作”的教學(xué)要求是學(xué)生觀察并總結(jié)上傳常用木質(zhì)產(chǎn)品的結(jié)構(gòu)設(shè)計(jì)。根據(jù)學(xué)生的在線反饋,教師不僅可以豐富課堂教學(xué)案例,還可以對(duì)相關(guān)知識(shí)點(diǎn)的講解進(jìn)行相應(yīng)調(diào)整。在課堂上,教師要分析學(xué)生的網(wǎng)絡(luò)學(xué)習(xí)情況,并以學(xué)生反饋疑惑中常見的問題為例進(jìn)行課堂教學(xué),鼓勵(lì)學(xué)生分組反思和討論問題,并分別提出自己的觀點(diǎn)。教師可以對(duì)重難點(diǎn)進(jìn)行闡述和分析,引導(dǎo)學(xué)生積極完成知識(shí)體系的構(gòu)建。例如,在“創(chuàng)意木質(zhì)產(chǎn)品設(shè)計(jì)與制作”的課堂學(xué)習(xí)中,各組學(xué)生進(jìn)行設(shè)計(jì)匯報(bào),由其他小組作為第三方進(jìn)行評(píng)價(jià),激發(fā)學(xué)生的競(jìng)爭(zhēng)意識(shí)。在課后,學(xué)生要積極完成教師布置的作業(yè),并以小組為單位進(jìn)行組間互評(píng),再由教師和企業(yè)專家評(píng)分,其中優(yōu)秀的木制品設(shè)計(jì)案例可以再次分享。同時(shí),針對(duì)學(xué)生課后可能出現(xiàn)的問題,師生可以一起討論,并作為教學(xué)資源不斷拓展。

一、教學(xué)資源

(一)教學(xué)環(huán)境企業(yè)化

基于木質(zhì)產(chǎn)品開發(fā)工作流程,建有打樣實(shí)訓(xùn)基地、生產(chǎn)技術(shù)實(shí)訓(xùn)基地,確保學(xué)生能夠真正在實(shí)踐中學(xué)習(xí),在學(xué)習(xí)中實(shí)踐。

(二)教學(xué)資源多樣化

根據(jù)項(xiàng)目化教學(xué)實(shí)際需求,團(tuán)隊(duì)與企業(yè)專家按照“以學(xué)生為中心,項(xiàng)目為主線,成果為導(dǎo)向”共同編寫了新型活頁(yè)式教材,將木質(zhì)產(chǎn)品設(shè)計(jì)師的任職要求、職業(yè)標(biāo)準(zhǔn)、工作過程作為教材主體內(nèi)容,將“立德樹人、課程思政”有機(jī)融入教材,將新技術(shù)、新工藝、新規(guī)范融入教材以適應(yīng)企業(yè)木質(zhì)產(chǎn)品設(shè)計(jì)加工新變化。結(jié)合慕課資源“家具結(jié)構(gòu)設(shè)計(jì)”“木家具制造工藝學(xué)”和虛擬仿真軟件(榫卯App/榫卯工藝App),相互補(bǔ)充,促進(jìn)項(xiàng)目化教學(xué)落地。

二、教學(xué)策略

(1)針對(duì)基礎(chǔ)不同的學(xué)生,適度調(diào)整學(xué)生課前慕課學(xué)習(xí)的任務(wù)量,著重任務(wù)驅(qū)動(dòng)下的現(xiàn)場(chǎng)教學(xué)。(2)教學(xué)設(shè)計(jì)基于木質(zhì)產(chǎn)品開發(fā)工作流程,以真實(shí)工作為導(dǎo)向開展教學(xué)。利用虛擬仿真軟件、專業(yè)繪圖軟件,有效突破課程重難點(diǎn)問題,幫助學(xué)生掌握崗位核心能力。(3)著眼于學(xué)生的持續(xù)發(fā)展,強(qiáng)調(diào)以學(xué)生為中心。組織開展設(shè)計(jì)調(diào)研和產(chǎn)品匯報(bào)會(huì)等教學(xué)活動(dòng),調(diào)動(dòng)學(xué)生自主學(xué)習(xí)的積極性,提高學(xué)生的參與感。

三、教學(xué)評(píng)價(jià)

基于木質(zhì)產(chǎn)品開發(fā)工作流程,將教學(xué)評(píng)價(jià)方式由期末考核轉(zhuǎn)變?yōu)樘嵘芰Φ倪^程性考核,采用企業(yè)導(dǎo)師主評(píng)、專業(yè)教師輔評(píng)、學(xué)生組間互評(píng)、學(xué)生自評(píng)的全過程考評(píng)方式,依托網(wǎng)上課程平臺(tái),嚴(yán)格按照企業(yè)驗(yàn)收標(biāo)準(zhǔn)對(duì)學(xué)生進(jìn)行量化評(píng)價(jià)和教與學(xué)全過程的信息采集。依據(jù)工業(yè)產(chǎn)品造型設(shè)計(jì)師職業(yè)資格標(biāo)準(zhǔn)、木制品國(guó)家標(biāo)準(zhǔn)制定評(píng)價(jià)內(nèi)容和評(píng)分標(biāo)準(zhǔn),最終形成多元有效、可評(píng)可測(cè)的整體評(píng)價(jià)方案。

四、教學(xué)效果

立足學(xué)情分析,有針對(duì)性地調(diào)整教學(xué)實(shí)施內(nèi)容,進(jìn)行分層教學(xué),引導(dǎo)學(xué)生充分理解木質(zhì)產(chǎn)品的核心知識(shí),并將理論運(yùn)用于實(shí)踐,學(xué)生的設(shè)計(jì)能力和素質(zhì)表現(xiàn)均有顯著提升。通過任務(wù)驅(qū)動(dòng)教學(xué)法,從真實(shí)的項(xiàng)目任務(wù)入手,可以提高理論知識(shí)和軟件技能的熟練程度,培養(yǎng)學(xué)生學(xué)以致用、用于探索的自學(xué)能力,使學(xué)生在任務(wù)實(shí)施的過程中學(xué)會(huì)學(xué)習(xí),在之后的課程學(xué)習(xí)過程中觸類旁通?;诠ぷ髁鞒探M織教學(xué)環(huán)節(jié),能夠使學(xué)生對(duì)接合作企業(yè),開拓整體產(chǎn)品開發(fā)設(shè)計(jì)思維,提高設(shè)計(jì)實(shí)戰(zhàn)能力,培養(yǎng)精益求精、追求卓越的工匠精神。最終,學(xué)生的設(shè)計(jì)能力會(huì)受到校企合作企業(yè)的一致認(rèn)可。

五、混合式教學(xué)設(shè)計(jì)模式

針對(duì)具體學(xué)情和課情,專業(yè)管理委員會(huì)在建構(gòu)主義、人本主義及金字塔理論的基礎(chǔ)上,依據(jù)ADDLE模型,將系統(tǒng)化的教學(xué)設(shè)計(jì)分為分析、設(shè)計(jì)、開發(fā)、實(shí)施和評(píng)價(jià)五個(gè)階段,每一階段包含具有不同目的和作用的子步驟,構(gòu)建了一個(gè)基于現(xiàn)代學(xué)徒制的高職設(shè)計(jì)專業(yè)混合式教學(xué)設(shè)計(jì)模式。

(一)任務(wù)驅(qū)動(dòng)線上學(xué)習(xí)

利用職教云平臺(tái),在課前上傳學(xué)生自主學(xué)習(xí)任務(wù)清單及相應(yīng)的教學(xué)課件、視頻等教學(xué)資源。任務(wù)清單包含學(xué)習(xí)目標(biāo)和建議、具體要求、需要完成的學(xué)習(xí)任務(wù)、問題反饋等,可以準(zhǔn)確記錄學(xué)生在平臺(tái)上的學(xué)習(xí)情況。這樣,教師可以提前掌握學(xué)生的自主學(xué)習(xí)情況和任務(wù)完成程度。常見學(xué)習(xí)問題的反饋會(huì)在課堂教學(xué)中由教師給予重點(diǎn)解答,個(gè)別問題也可以在線上或線下單獨(dú)解答。

(二)討論式課堂教學(xué)

課堂教學(xué)以解決問題為首要任務(wù),關(guān)注學(xué)生在線學(xué)習(xí)中的常見問題。一些難以通過線上指導(dǎo)的問題,可以在線下課堂解決。在課堂上,學(xué)生在小組中進(jìn)一步探索任務(wù),在教師的幫助下深入思考,積極參與學(xué)習(xí)經(jīng)驗(yàn)的交流,積極構(gòu)建知識(shí)體系。小組活動(dòng)結(jié)束后,教師組織學(xué)生進(jìn)行討論,并及時(shí)給予指導(dǎo)和評(píng)價(jià),引導(dǎo)學(xué)生進(jìn)一步總結(jié)和反思,全方位提高自己的知識(shí)、技能和思想。

(三)課后形成教學(xué)閉環(huán)

篇8

關(guān)鍵詞:微課教學(xué)模式;開門見山式;情景式;探究式;拋錨式;理論實(shí)踐一體式

隨著科學(xué)技術(shù)的的迅猛發(fā)展,微時(shí)代逐漸步入了人們的生活,人類獲得了越來越多不一樣的微體驗(yàn)。當(dāng)今時(shí)代,時(shí)間的碎片化、知識(shí)冗余等問題沖擊著我們。而微課的誕生,在一定程度上推動(dòng)了教育的改革與進(jìn)步,推動(dòng)了數(shù)字化資源建設(shè)模式轉(zhuǎn)換。如何制作出高質(zhì)量的微課,微課的教學(xué)設(shè)計(jì)是首要因素。

一微課

微課,最早產(chǎn)生于美國(guó)。在2007年,美國(guó)科羅拉多州WoodlandPark學(xué)校的化學(xué)老師JonathanBergmann和AaronSams,為了解決部分學(xué)生不能正常上課的問題,制作視頻課程,將這些視頻到網(wǎng)上之后供學(xué)生觀摩學(xué)習(xí)。每個(gè)錄制好的課程的時(shí)間只有幾分鐘,講解少量的知識(shí),具有一定的針對(duì)性且查看容易。這樣學(xué)生就可以在課堂外學(xué)習(xí)到知識(shí),改善學(xué)習(xí)效果,另外可以提高學(xué)習(xí)者的自信心和學(xué)習(xí)的效率,從而微課也迅速的發(fā)展起來了。在我國(guó),微課最初出現(xiàn)在2011年,胡鐵生教授率先提出“微課”,引起了廣泛的關(guān)注,從而為微課研究帶來了新的研究領(lǐng)域。

二國(guó)內(nèi)微課的發(fā)展存在的問題

目前,國(guó)內(nèi)微課的發(fā)展存在的問題有:(1)微課視頻與傳統(tǒng)課堂錄像之間的區(qū)分還不為大多數(shù)人知道;(2)部分教師雖然在參加微課培訓(xùn)班或者研究微課,但是他們只重視信息技術(shù)上的學(xué)習(xí),而忽視教學(xué)設(shè)計(jì)等方面的重要工作,而且制作微課的技能沒有被大部分教師所擁有;(3)目前的微課大賽,也只是要求參賽教師設(shè)計(jì)制作一集微課,而在參賽過后,這集微課便被束之高閣,沒有真正地提高教學(xué)質(zhì)量;(4)目前開發(fā)出來的微課,質(zhì)量參差不齊。有的技術(shù)做的好,有的設(shè)計(jì)做得好但呈現(xiàn)方式上設(shè)計(jì)的不是很完美??偟膩碚f,整體的教學(xué)設(shè)計(jì)把握不夠好;(5)制作開發(fā)與呈現(xiàn)方式有待于改進(jìn)和開發(fā)以及微課程的教學(xué)支持服務(wù)有待于完善等。

三微課教學(xué)設(shè)計(jì)

微課品質(zhì)的優(yōu)劣的衡量,首要因素是教學(xué)設(shè)計(jì),其次是表達(dá)方式設(shè)計(jì)。(一)微課的教學(xué)的設(shè)計(jì)基本模型微課的教學(xué)的設(shè)計(jì)基本模型應(yīng)該包括三個(gè)階段,即分析階段、設(shè)計(jì)階段和評(píng)價(jià)階段。具體包含的內(nèi)容,如圖1中所包含的各項(xiàng)內(nèi)容。(1)開門見山式微課此類微課表示教師直接呈現(xiàn)授課內(nèi)容與目標(biāo),能夠引起學(xué)生注意,便于其理清的知識(shí)脈絡(luò)。通過對(duì)本節(jié)課的重點(diǎn)概念或關(guān)鍵問題的簡(jiǎn)介,引入知識(shí)內(nèi)容,既突出了授課的重難點(diǎn),又是一種微課知識(shí)引入的良好方式。這種模式較適合對(duì)該部分內(nèi)容具有很強(qiáng)的學(xué)習(xí)興趣,且具有相關(guān)知識(shí)儲(chǔ)備的學(xué)習(xí)者。直接對(duì)知識(shí)進(jìn)行闡述,也是一種能夠吸引學(xué)習(xí)者注意力的好的設(shè)計(jì)模式。另外,這種模式不適合對(duì)年齡較小的學(xué)習(xí)者采用,由于直接進(jìn)行講解知識(shí),不進(jìn)行課前導(dǎo)入或者興趣的激發(fā),難以抓住學(xué)習(xí)者的興趣。(2)情境式微課情境式微課主要是從教學(xué)內(nèi)容呈現(xiàn)和表達(dá)方面帶動(dòng)學(xué)生的情感,調(diào)動(dòng)學(xué)生的思維和維持學(xué)生的注意力。這種教學(xué)設(shè)計(jì)模式正如示意圖中所闡述的那樣,情境可以是真實(shí)的、語(yǔ)言描述的、虛擬的和實(shí)物演示的。這種微課教學(xué)設(shè)計(jì)模式,對(duì)學(xué)生具有感染力,而且可以使復(fù)雜問題簡(jiǎn)單化、抽象問題形象化,對(duì)學(xué)習(xí)者的興趣的激發(fā),有利于幫助教師對(duì)教學(xué)內(nèi)容進(jìn)行清晰的講授。(3)探究式微課在沒有學(xué)生參與的情況下,教師通過問題的預(yù)設(shè)和處理來引導(dǎo)學(xué)生思考,通過尋疑和釋疑的交替的方式進(jìn)行教學(xué),探究式微課,強(qiáng)調(diào)以學(xué)生為中心,由于面對(duì)的是視頻外的學(xué)習(xí)者,所以要求教師具有很好的教學(xué)引導(dǎo)技能,根據(jù)教學(xué)內(nèi)容的需要,選擇合適的表達(dá)方式,通過尋找問題和解決問題推動(dòng)教學(xué)。(4)拋錨式微課拋錨式微課采用情景渲染的方法教學(xué),一般從感染學(xué)習(xí)者的真實(shí)問題或?qū)嶋H案例出發(fā)。具體設(shè)計(jì)模式如圖2。(5)理論實(shí)踐一體式微課理實(shí)一體式微課,在授課過程中采用知識(shí)講解與操作演示交替的方式進(jìn)行教學(xué)。具體的設(shè)計(jì)模式如圖3所示.上述五種微課教學(xué)模式的探討和設(shè)計(jì),每個(gè)微課的教學(xué)設(shè)計(jì)模式不是固定不變的,而是以教學(xué)目標(biāo)為出發(fā)點(diǎn),根據(jù)教學(xué)內(nèi)容以及所面對(duì)的學(xué)習(xí)者的特征,選取表達(dá)教學(xué)效果最優(yōu)的設(shè)計(jì)模式。另外,以上五種模式不僅僅可以單獨(dú)使用,還可以根據(jù)實(shí)際需要選擇和組合這五種設(shè)計(jì)模式,制作出高質(zhì)量的微課以達(dá)到更好的教學(xué)效果。

四結(jié)論

篇9

關(guān)鍵詞:MVP Android 設(shè)計(jì)模式 UI 控制器 模型 視圖

中圖分類號(hào):F270.7 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2016)12(a)-0097-02

在Android上,業(yè)務(wù)邏輯和數(shù)據(jù)存取是緊耦合的,很多缺乏經(jīng)驗(yàn)的工程師可能會(huì)將各種各樣的業(yè)務(wù)邏輯塞進(jìn)某些組件或者自定義View中,使得這些組件的單個(gè)類臃腫不堪,這對(duì)程序的更新迭代造成很大的影響,而好的設(shè)計(jì)模式可以使得各個(gè)模塊之間相互分離,解決系統(tǒng)的耦合度,提高程序的擴(kuò)展性。

1 MVP概述

MVP是根據(jù)MVC延伸出來的一種使用者界面設(shè)計(jì)模式,是20世紀(jì)90年代,IBM旗下的子公司Taligent在用C/C++開發(fā)一個(gè)叫CommonPoint的圖形界面應(yīng)用系統(tǒng)的時(shí)候提出來的。MVP能夠有效降低View的復(fù)雜性,避免業(yè)務(wù)邏輯被塞進(jìn)View中。MVP模式比之MVC模式而言解除了View與Model之間的耦合,同時(shí)又帶來了良好的可擴(kuò)展性、可測(cè)試性。

MVP模式可以分離顯示層和邏輯層,它們之間通過接口進(jìn)行通信,降低耦合。理想化的MVP模式可以實(shí)現(xiàn)同一份邏輯代碼搭配不同的顯示界面,其中的面向接口編程使得程序更加具有開放性以及適用性,保證了靈活性。

2 MVP模式剖析

2.1 MVP模式結(jié)構(gòu)

MVP模式中,用戶與View交互,View與Presenter通過接口進(jìn)行通信,Presenter與Model通過接口進(jìn)行交互,Model功能不光提供數(shù)據(jù)模型,還有數(shù)據(jù)的存儲(chǔ)與獲取業(yè)務(wù)包含在內(nèi),整體設(shè)計(jì)而言解除了View與Model之間的耦合。

MVP模式可以讓UI界面和數(shù)據(jù)分離,我們的應(yīng)用至少可以分為3層,這樣可以使得我們對(duì)這3層進(jìn)行獨(dú)立的單元測(cè)試。

MVP并不是一個(gè)標(biāo)準(zhǔn)化的模式,用戶可以根據(jù)自己的需求和理解去實(shí)現(xiàn)自己的MVP模式設(shè)計(jì)。

2.2 View模塊分析

視圖(View)用于顯示UI界面及與用戶交互使用,通常使用Android中的Activity、Fragment或者自定義View作為View層。

在此建議使用Fragment作為View層,因?yàn)镕ragment自身的特殊性,F(xiàn)ragment自身可作為View來使用,使得程序有更好的擴(kuò)展性和靈活性。

因?yàn)镸VP自身的獨(dú)特性,View和Presenter之間直接存在著關(guān)聯(lián),所以可以使用接口來規(guī)定二者的通信。

而View自身需要和Presenter進(jìn)行通信,所以一般View持有一個(gè)Presenter成員變量。通常View需要實(shí)現(xiàn)一個(gè)邏輯接口,將View上的操作通過回轉(zhuǎn)交給Presenter實(shí)現(xiàn),最后Presenter調(diào)用View邏輯接口將返回結(jié)果給View元素。

理想狀態(tài)下,可以在同一套業(yè)務(wù)邏輯中完全替換新的View,因?yàn)镻resenter和View之間都是使用各自的接口對(duì)象進(jìn)行通信。

2.3 Presenter模塊分析

控制器(Presenter)也稱為交互中間人,作為溝通View和Model之間的橋梁,它從Model層檢索數(shù)據(jù)后,返回oView層,使得View和Model之間沒有耦合,也將業(yè)務(wù)邏輯從View角色上抽離出來。

所以一般情況下,Presenter具體實(shí)現(xiàn)類中需要持有View和Model接口對(duì)象來進(jìn)行交互。

2.4 Model模塊分析

模型(Model)負(fù)責(zé)數(shù)據(jù)的獲取和存儲(chǔ),主要角色是提供數(shù)據(jù)的存取功能。Presenter需要通過Model層存儲(chǔ)、獲取數(shù)據(jù)、請(qǐng)求遠(yuǎn)程數(shù)據(jù)等,Model層是一個(gè)封裝了數(shù)據(jù)庫(kù)DAO層及網(wǎng)絡(luò)獲取數(shù)據(jù)的數(shù)據(jù)倉(cāng)庫(kù)。

因?yàn)镸odel層自身的特殊性,負(fù)責(zé)數(shù)據(jù)的獲取,而有些特殊應(yīng)用需要緩存數(shù)據(jù)到本地?cái)?shù)據(jù)庫(kù),所以從遠(yuǎn)程服務(wù)器和本地存儲(chǔ)(如:數(shù)據(jù)庫(kù)或文件)都可能會(huì)存取到,可以在Presenter層中控制數(shù)據(jù)的來源。

3 MVP模式應(yīng)用在Android中的實(shí)現(xiàn)

3.1 View與Presenter之間的關(guān)聯(lián)及實(shí)現(xiàn)

在MVP模式中,View和Presenter之間相互通信,因此可以定義出View和Presenter中的所有通信動(dòng)作,可以使用接口來限定V和P層的動(dòng)作,并且V層應(yīng)該持有P層的對(duì)象,可以使用如下代碼:

public interface BaseView{

void setPresenter(T presenter);

void showLoading(String value);

void dismissLoading();

boolean isActive();

}

public interface BasePresenter{

void start();

void initData();

void bindDataToView();

}

public interface LoginContract{

interface Viewextends BaseView{

void setUsername(String userName);

void setPassword(String passWord);

}

interface Presenter extends BasePresenter{

void login(String userName,String pass Word);

}

}

可定義View和Presenter的基類中定義基礎(chǔ)的動(dòng)作,并且規(guī)定View中必須實(shí)現(xiàn)邏輯接口,將View上的操作通過回轉(zhuǎn)交給Presenter實(shí)現(xiàn),最后Presenter調(diào)用View邏輯接口將返回結(jié)果給View元素,Presenter層中可在具體類的構(gòu)造方法中加入View參數(shù),從而實(shí)現(xiàn)View和Presenter互相通信的目的。

在初始化Presenter后,Presenter類中必須調(diào)用View中實(shí)現(xiàn)的邏輯接口,將自身傳遞進(jìn)去。

3.2 Android中Model層的設(shè)計(jì)

因?yàn)镸odel層的特殊性,Model可定義為數(shù)據(jù)倉(cāng)庫(kù),Model可以從遠(yuǎn)程服務(wù)器或者本地保存的數(shù)據(jù)中讀取數(shù)據(jù),可以把請(qǐng)求網(wǎng)絡(luò)接口的操作放在Model中,或者負(fù)責(zé)第三方SDK交互操作,這一層包含實(shí)際的Model類,用于定義當(dāng)前數(shù)據(jù)結(jié)構(gòu)。

Presenter層可以通過回調(diào)獲取Model層的數(shù)據(jù),完成Presenter層和Model層間的通信。

4 結(jié)語(yǔ)

該文對(duì)MVP設(shè)計(jì)模式的概念及其在Android中的設(shè)計(jì)使用進(jìn)行了介紹??梢钥闯?,MVP模式非常容易使用,但需要指出的是,MVP并非一套固定的試潁用戶可以根據(jù)自己的需求和理解去撰寫自己的MVP模式。

MVP縱然有代碼耦合度降低、層級(jí)清晰等一系列優(yōu)點(diǎn),但是大量的View-Model,Model-View的手動(dòng)同步會(huì)造成Presenter比較笨重,維護(hù)起來會(huì)比較困難,而且View和Presenter之間太過緊密,如果View變更,Presenter也需要變更,增加了代碼的復(fù)雜度。

最后,我們應(yīng)該明白,所有的設(shè)計(jì)模式都只是對(duì)程序開發(fā)的指導(dǎo),并不是準(zhǔn)則,我們應(yīng)該根據(jù)自己實(shí)際開發(fā)中的項(xiàng)目經(jīng)驗(yàn)和實(shí)際情況來選擇是否使用以及如何使用設(shè)計(jì)模式,從而編寫出更加優(yōu)良的代碼。

參考文獻(xiàn)

篇10

工作室教學(xué)模式的優(yōu)點(diǎn)

增強(qiáng)學(xué)生實(shí)踐鍛煉的機(jī)會(huì)工作室課題一般來自社會(huì)的實(shí)際課題,這就給學(xué)生提供了接觸實(shí)際設(shè)計(jì)的機(jī)會(huì),使學(xué)生不僅僅考慮專業(yè)理論知識(shí)層面,更多的是站在市場(chǎng)和企業(yè)的度去思考問題,以適應(yīng)實(shí)題設(shè)計(jì)的要求。同時(shí)也為教師和學(xué)生提供了一個(gè)開放式的教學(xué)實(shí)踐環(huán)境,它比傳統(tǒng)的實(shí)踐教學(xué)擁有更多的自和更廣泛的實(shí)踐教學(xué)機(jī)會(huì),這就為學(xué)生創(chuàng)造力的發(fā)揮提供良好的空間,促進(jìn)師生的互動(dòng)交流和學(xué)習(xí)實(shí)踐,給學(xué)生提供了掌握專業(yè)技能、培養(yǎng)創(chuàng)新思維的良好操作平臺(tái)。形成產(chǎn)、學(xué)、研一體化的重要途徑在實(shí)際生活中一般存在大量的設(shè)計(jì)問題有待解決,這些問題直接影響到設(shè)計(jì)教學(xué)與社會(huì)應(yīng)用,工作室可以由教師通過社會(huì)承接的項(xiàng)目、有條件地組織學(xué)生參與,或以實(shí)題虛做的形式把實(shí)踐項(xiàng)目融到教學(xué)中去。這樣學(xué)生可直接或間接地參與社會(huì)實(shí)踐活動(dòng),形成產(chǎn)、學(xué)、研一體化新型教育模式。增強(qiáng)教師與學(xué)生的信心、激發(fā)熱情在工作室整合、優(yōu)化各種資源的條件下,在實(shí)踐環(huán)節(jié)設(shè)置上形成了從課堂到工作室及社會(huì)實(shí)踐的系統(tǒng),通過實(shí)體項(xiàng)目的實(shí)踐與鍛煉,提升了教師的教學(xué)效果,也提高了學(xué)生的實(shí)踐能力。為教師進(jìn)行科研項(xiàng)目提供有效的資源支持,也為學(xué)生下步找適應(yīng)自身的發(fā)展條件及社會(huì)的需求工作打下堅(jiān)實(shí)的基礎(chǔ)。

提高工作室教學(xué)效果的途徑

加強(qiáng)優(yōu)秀學(xué)生培養(yǎng)學(xué)生是工作室教學(xué)中學(xué)習(xí)的主體,在經(jīng)過兩年的專業(yè)基礎(chǔ)知識(shí)學(xué)習(xí)后,學(xué)生可根據(jù)自身的興趣和個(gè)人發(fā)展目標(biāo)來選擇進(jìn)入相應(yīng)的專業(yè)方向工作室,教師的作用是在工作室的環(huán)境下,并進(jìn)行具體的實(shí)踐項(xiàng)目指導(dǎo)。因此,教師要根據(jù)學(xué)生個(gè)體能力的差異因材施教,為培養(yǎng)優(yōu)秀的學(xué)生打好基礎(chǔ)。另外,教師在工作室教學(xué)中增強(qiáng)了師生間的良性互動(dòng),有效地將學(xué)生被動(dòng)地接受知識(shí)轉(zhuǎn)變?yōu)閷W(xué)生主動(dòng)學(xué)習(xí),增強(qiáng)學(xué)生的創(chuàng)新能力,學(xué)生要通過學(xué)習(xí)理論來有效解決項(xiàng)目中遇到的問題,逐步實(shí)現(xiàn)自我獨(dú)立設(shè)計(jì)并完成設(shè)計(jì)項(xiàng)目等,為學(xué)生走向社會(huì)積累寶貴的設(shè)計(jì)工作經(jīng)驗(yàn)。加強(qiáng)教師綜合素質(zhì)的提高在整個(gè)工作室教學(xué)模式中,教師無疑是整個(gè)教學(xué)環(huán)節(jié)的指導(dǎo)者,學(xué)生的創(chuàng)新能力的形成與教師的指導(dǎo)是分不開的,因此教師自身素質(zhì)的高低決定了工作室運(yùn)行的情況。同時(shí)教師也是協(xié)調(diào)者、促進(jìn)者、資源顧問等。當(dāng)學(xué)生有問題的時(shí)候,要以學(xué)生為主體、認(rèn)真對(duì)待學(xué)生的問題,并用積極樂觀的心態(tài)去欣賞學(xué)生的作品、去了解每一個(gè)學(xué)生的狀況,以學(xué)生的實(shí)際情況出發(fā)對(duì)其進(jìn)行相應(yīng)的指導(dǎo)和鼓勵(lì)。因此,教師在此過程中也應(yīng)加強(qiáng)自身綜合素質(zhì)的提高。加強(qiáng)與社會(huì)交流合作的機(jī)會(huì)(1)與企業(yè)合作。工作室教學(xué)模式是以現(xiàn)實(shí)存在的某些實(shí)際東西為基礎(chǔ)的,平日應(yīng)多加強(qiáng)與社會(huì)的交流與合作的機(jī)會(huì)。例如在設(shè)計(jì)的時(shí)候可以與企業(yè)進(jìn)行相應(yīng)的溝通,其設(shè)計(jì)題目多來源于企業(yè)或是相應(yīng)的競(jìng)賽項(xiàng)目,能為學(xué)生確定任務(wù)和目標(biāo),方便學(xué)生進(jìn)行相應(yīng)設(shè)計(jì);也就是企業(yè)參與到教學(xué)中來,企業(yè)為教學(xué)提供實(shí)踐場(chǎng)地,參與教學(xué)實(shí)踐,學(xué)校為企業(yè)提供創(chuàng)意資源,實(shí)現(xiàn)雙方共贏。(2)組織參加各類專業(yè)比賽。除了通過市場(chǎng)招標(biāo)來的真實(shí)項(xiàng)目外,工作室還可以不定期組織學(xué)生參加各級(jí)各類專業(yè)大賽。通過大賽一來可以培養(yǎng)工作室學(xué)生的創(chuàng)新思維、技能水平和團(tuán)隊(duì)合作意識(shí)等,二來還可以通過獲得獎(jiǎng)項(xiàng)提高工作室的知名度,實(shí)現(xiàn)學(xué)校與企業(yè)的雙贏。(3)融入畢業(yè)設(shè)計(jì)環(huán)節(jié)。除此之外,還可將畢業(yè)設(shè)計(jì)環(huán)節(jié)與企業(yè)、工廠等社會(huì)實(shí)體項(xiàng)目相結(jié)合,學(xué)生為企業(yè)提供創(chuàng)意服務(wù),企業(yè)為學(xué)生提供實(shí)現(xiàn)畢業(yè)設(shè)計(jì)的場(chǎng)地及實(shí)踐資源,這樣就能將設(shè)計(jì)知識(shí)更好地融入實(shí)際,增加畢業(yè)設(shè)計(jì)的深度與可行性。工作室教學(xué)模式能縮短學(xué)生和市場(chǎng)距離,使學(xué)生在學(xué)校期間就能對(duì)企業(yè)有所了解,以便畢業(yè)后更好地參與到企業(yè)中。總之,工作室教學(xué)強(qiáng)調(diào)的是教學(xué)實(shí)踐與社會(huì)生產(chǎn)服務(wù)相結(jié)合的學(xué)以致用的理念,適應(yīng)現(xiàn)代教育制度發(fā)展與需求,合理采用工作室形式培養(yǎng)設(shè)計(jì)類人才,已經(jīng)成為現(xiàn)代化藝術(shù)設(shè)計(jì)專業(yè)發(fā)展的必然趨勢(shì)。

作者:張春蓉 單位:安陽(yáng)工學(xué)院