- 相關(guān)推薦
設(shè)計(jì)模式心得體會(huì)
從某件事情上得到收獲以后,寫(xiě)一篇心得體會(huì),記錄下來(lái),從而不斷地豐富我們的思想。那么你知道心得體會(huì)如何寫(xiě)嗎?下面是小編為大家整理的設(shè)計(jì)模式心得體會(huì),歡迎閱讀,希望大家能夠喜歡。
設(shè)計(jì)模式心得體會(huì)1
以前沒(méi)有接觸過(guò)設(shè)計(jì)模式,那其實(shí)也是因?yàn)橐郧皼](méi)有真正經(jīng)歷過(guò)面向?qū)ο蟮脑O(shè)計(jì)。這樣的情況在我經(jīng)歷了本科畢業(yè)設(shè)計(jì),并且遵循我們實(shí)驗(yàn)室的一位師兄的建議看了《設(shè)計(jì)模式精解》后有了根本的改變,我開(kāi)始意識(shí)到一個(gè)程序員和一個(gè)設(shè)計(jì)者的區(qū)別,我也開(kāi)始意識(shí)到在同學(xué)眼中“編程很強(qiáng)”的我只是——至少現(xiàn)在只是一個(gè)程序員。
我做的本科畢設(shè)是基于java—swing設(shè)計(jì)一個(gè)類似繪圖程序的系統(tǒng),最終我設(shè)計(jì)出來(lái)的程序,在別人看來(lái)很不錯(cuò)。但是只有我自己知道,我的設(shè)計(jì)其實(shí)是糟糕了,最明顯的就是低內(nèi)聚、緊耦合,那些代碼甚至連我都不愿意去維護(hù)。于是當(dāng)我看到書(shū)中的一句話:“幾乎百分之百的軟件都不是由它最初的設(shè)計(jì)者去維護(hù)的”,更讓我感到這次設(shè)計(jì)的失。ň瓦B它的設(shè)計(jì)者都不原意去維護(hù))。
《設(shè)計(jì)模式精解》的出現(xiàn)可以說(shuō)讓我眼前一亮,這也是第一本讓我想再讀一次的書(shū)(即使現(xiàn)在我還沒(méi)有讀完)。
究竟什么是模式?書(shū)中的解釋是“模式是針對(duì)特定場(chǎng)景下的特定問(wèn)題的可重復(fù)、可表達(dá)的解決方案”,除此之外模式還必須有三個(gè)要點(diǎn):
1.可重復(fù)性。解決方案應(yīng)該對(duì)應(yīng)于外部的場(chǎng)景。
2.可傳授性。一個(gè)解決方案應(yīng)該可以移植到問(wèn)題的不同情況中(絕大多數(shù)模式的可傳授性都建立在“約束”和“效果”的基礎(chǔ)上)。
3.用來(lái)表示這個(gè)模式的名稱。
模式不限于面向?qū)ο螅幌抻谠O(shè)計(jì)階段,甚至不限于軟件開(kāi)發(fā)領(lǐng)域。設(shè)計(jì)模式只是模式的一個(gè)子集。
在前言中作者說(shuō)在他對(duì)現(xiàn)有的設(shè)計(jì)模式的.指導(dǎo)原則及策略都非常清楚之后,這些原則幫助他決定開(kāi)始過(guò)一種為人解惑的生活??雖然我第一次看到“為人解惑的生活”這個(gè)詞語(yǔ),但是我立刻感到這也是我所向往的一種生活。
書(shū)中介紹了軟件開(kāi)發(fā)過(guò)程中的三個(gè)不同視角:
1.概念視角。這個(gè)視角“展現(xiàn)了問(wèn)題領(lǐng)域中的概念??一個(gè)概念模型可以在對(duì)實(shí)現(xiàn)軟件有很少或毫無(wú)注意的情況下畫(huà)出??”
2.規(guī)格視角!爸豢窜浖慕涌,而不看實(shí)現(xiàn)”
3.實(shí)現(xiàn)視角。就是現(xiàn)在的我唯一使用的視角——置身于代碼之中。
看到這里我更加肯定了這本所講的是我從來(lái)沒(méi)有注意過(guò)的東西,但是我對(duì)這些東西應(yīng)該非常感興趣,而我也深深地感慨:我為什么現(xiàn)在才看到這本書(shū)。
在書(shū)中作者回顧了它從前的一個(gè)設(shè)計(jì),通過(guò)不斷修改得出的優(yōu)秀設(shè)計(jì),逐步展現(xiàn)出設(shè)計(jì)模式的強(qiáng)大威力。書(shū)中有句話很經(jīng)典——如果你只有一把錘子,那你會(huì)發(fā)現(xiàn)所有的東西都像釘子。意思是說(shuō)如果你只知道一種解決問(wèn)題的辦法,那你只會(huì)想用這個(gè)方法解決所有問(wèn)題。我覺(jué)得這很像現(xiàn)在的我,在面向?qū)ο蟮脑O(shè)計(jì)中我?guī)缀踔粫?huì)“類繼承”,結(jié)果是我的畢設(shè)——過(guò)高的繼承體系導(dǎo)致緊耦合、低內(nèi)聚。
當(dāng)我學(xué)到書(shū)中介紹的第一個(gè)設(shè)計(jì)模式:facade模式,我立刻對(duì)這些設(shè)計(jì)模式產(chǎn)生了濃厚的興趣,我發(fā)現(xiàn)自己像一個(gè)“完美主義者”,在試圖追求結(jié)構(gòu)完美的程序代碼(可讀性、易于維護(hù)),而設(shè)計(jì)模式給我提供了這樣的可能,盡管我僅僅看到了它的一點(diǎn)點(diǎn)部分。設(shè)計(jì)模式就像一個(gè)漂亮的女孩,而且你知道她不僅外表很漂亮,也很有內(nèi)涵,那你想做的事情還有什么呢?當(dāng)然是盡快接近并了解她??
設(shè)計(jì)模式心得體會(huì)2
從學(xué)習(xí)杜郎口到學(xué)習(xí)洋思已經(jīng)幾年了,每年每學(xué)期都要進(jìn)行大規(guī)模的聽(tīng)課活動(dòng),可謂轟轟烈烈,但學(xué)習(xí)了幾年時(shí)間,我心中仍然一塌糊涂,一知半解,難以靈活運(yùn)用,嘗試著運(yùn)用時(shí),也是提襟見(jiàn)肘,顧此失彼。所以成功的經(jīng)驗(yàn)很少,只能有一點(diǎn)粗略的.感受。
我覺(jué)得目標(biāo)設(shè)計(jì)盡量的要簡(jiǎn)潔明了,通俗易懂,要讓絕大多數(shù)學(xué)生能夠完成,如果太難或過(guò)于簡(jiǎn)單,都不利于學(xué)生的學(xué)習(xí)。目標(biāo)設(shè)計(jì)應(yīng)控制在1————3條為宜,如果目標(biāo)太多,一節(jié)課根本無(wú)法完成,那就白設(shè)計(jì)了,從學(xué)生的角度來(lái)說(shuō),當(dāng)看到很多的目標(biāo)時(shí),心中會(huì)產(chǎn)生恐懼和排斥情緒,不利于學(xué)習(xí)。
由于條件限制,當(dāng)堂訓(xùn)練時(shí)只能采用課后練習(xí)和配套練習(xí),缺少靈活性,對(duì)于在電子白板上做練習(xí)題,我總覺(jué)得效果不太,因?yàn)橐坏李}目看過(guò)后,印象不深,只有親手做過(guò),才能記憶深刻。
其它環(huán)節(jié),我正在努力嘗試、探索。
設(shè)計(jì)模式心得體會(huì)3
從一開(kāi)始學(xué)習(xí)設(shè)計(jì)模式至今已半年有余了,第一次接觸設(shè)計(jì)模式是一次不經(jīng)意間在上看到《大話設(shè)計(jì)模式》一書(shū),看了前言了第一章后,就感覺(jué)到其誘惑力對(duì)于一個(gè)程序員來(lái)說(shuō),是無(wú)比巨大的。大概是去年十月份的時(shí)候,部門(mén)決定成立讀書(shū)會(huì),系統(tǒng)學(xué)習(xí)設(shè)計(jì)模式。
通過(guò)學(xué)習(xí)設(shè)計(jì)模式,除了學(xué)習(xí)到“一些設(shè)計(jì)模式”,還讓我進(jìn)一步熟悉、鞏固了面向?qū)ο笏枷,進(jìn)一步熟悉了c#語(yǔ)言。
我曾多次設(shè)想,我們?nèi)绻朊嫦驅(qū)ο笏枷,并結(jié)合設(shè)計(jì)模式來(lái)重寫(xiě)或改善我們的系統(tǒng)(必須重寫(xiě),雖說(shuō)設(shè)計(jì)模式只是一種思想,語(yǔ)言只是實(shí)現(xiàn)而已,但是選擇一門(mén)的語(yǔ)言,無(wú)疑也是非常重要的,而vb6在面向?qū)ο蠓矫鎱s有很大欠缺甚至不具備其條件),那么我們的系統(tǒng)將會(huì)像目前一樣需要那么多人來(lái)維護(hù)嗎?
《大話設(shè)計(jì)模式》一書(shū)其實(shí)是對(duì)gof的《設(shè)計(jì)模式——可復(fù)用面向?qū)ο筌浖幕A(chǔ)》一書(shū)的“翻譯”,讓人更容易理解,用通俗易懂的語(yǔ)言闡述軟件設(shè)計(jì)過(guò)程中的一些“模式”,在某種特定環(huán)境下,用最的設(shè)計(jì)方法(代碼高內(nèi)聚,低耦合,使其有良的可擴(kuò)展性和可維護(hù)性)達(dá)到我們的目的,或許其方法有很多很多,但是尋找到最的`方法卻不是件容易的事,設(shè)計(jì)模式是對(duì)前人的設(shè)計(jì)經(jīng)驗(yàn)的一個(gè)總結(jié),告訴我們?cè)谀撤N特定的環(huán)境下,這樣的設(shè)計(jì)師最的,學(xué)習(xí)設(shè)計(jì)模式有助于我們?cè)谠O(shè)計(jì)軟件的過(guò)程中少走很多彎路。
我對(duì)gof的23個(gè)設(shè)計(jì)模式雖然都有看過(guò),但是只有理解,實(shí)現(xiàn),應(yīng)用及思考之后,才能真正體會(huì)其精妙之處,至今體會(huì)較深的有以下幾個(gè)模式:
1、strategy——封裝系列“算法”,讓它們之間可以相互替換,“算法”并不是單指數(shù)據(jù)結(jié)構(gòu)中的算法,在實(shí)踐中,它幾乎可以封裝任何類型的規(guī)則,這使得策略模式的運(yùn)用極其廣泛。
2、template method——有人說(shuō)是用的做多的模式,只要有抽象類的地方,都可以看到這個(gè)模式,它通過(guò)把不變行為移到父類中去,去除子類中的重復(fù)代碼,從而提供了一個(gè)很的代碼復(fù)用平臺(tái)。
3、facade——提供了對(duì)基礎(chǔ)架構(gòu)的統(tǒng)一訪問(wèn),減少?gòu)?fù)雜性,在web編程者中的三層架構(gòu),就是此思想,每一層都封裝一部分功能,提供給上一層統(tǒng)一的方法調(diào)用,整個(gè)framework體系就是facade模式的封裝,隨著1.0升級(jí)到3.5,越來(lái)越多復(fù)雜的高級(jí)功能被封裝,可以說(shuō)facade無(wú)處不在。
4、abstract factory——提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類,咋一看,太抽象了,說(shuō)個(gè)例子,在三層架構(gòu)中,bll層對(duì)dal層的調(diào)用會(huì)直接用到dal層中的類,如果dal層是分別對(duì)sql server,oracle的訪問(wèn),bll層需要根據(jù)實(shí)際情況決定實(shí)例化哪一個(gè)dal層中的類,我們又希望在兩種dal層切換時(shí),bll層和ui層都不做改變,那么可在bll層和dal層中增加接口層(體現(xiàn)了“抽象”的精神,或者說(shuō)是“面向接口編程”的最佳體現(xiàn))和抽象工廠(dalfactroy),讓它來(lái)實(shí)例化dal層中的實(shí)例。
5、singleton——確保一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn),如單件窗體,點(diǎn)一下menu,彈出一個(gè)窗體(實(shí)例),在關(guān)閉這個(gè)新窗體之前,再次點(diǎn)擊該menu,不會(huì)再次出現(xiàn)同樣的彈出窗體(實(shí)例)。
篇幅有限,其他模式或多或少都有點(diǎn)感覺(jué)。
最后,引用《設(shè)計(jì)模式解析》書(shū)中的一句話:設(shè)計(jì)模式體現(xiàn)的是一種思想,而思想是指導(dǎo)行為的一切,理解和掌握了設(shè)計(jì)模式,并不是說(shuō)記住了23種(或更多)設(shè)計(jì)場(chǎng)景和解決策略(實(shí)際上這也是很重要的一筆財(cái)富),實(shí)際接受的是一種思想的熏陶和洗禮,等這種思想融入到了你的思想中后,你就會(huì)不自覺(jué)地使用這種思想去進(jìn)行你的設(shè)計(jì)和開(kāi)發(fā),這一切才是最重要的。
設(shè)計(jì)模式心得體會(huì)4
近幾年,我們?cè)谛nI(lǐng)導(dǎo)的帶領(lǐng)下,實(shí)施了有本校特色的四大模塊,八大環(huán)節(jié)的課堂教學(xué)模式。通過(guò)我們幾年來(lái)的努力專研,現(xiàn)在,我們都可以很流暢的把我校的教學(xué)模式運(yùn)用到我們的課堂教學(xué)中了,當(dāng)然,在這幾年的專研中,我也有了自己的體會(huì),
現(xiàn)在,我就談?wù)勎覀(gè)人的一些看法。
一、改變舊觀念,接受新模式
對(duì)于一個(gè)新的事物,需要通過(guò)不斷地學(xué)習(xí)去了解它,新的教學(xué)模式也是這樣。這學(xué)期,學(xué)校組織我們進(jìn)行了多次學(xué)習(xí),深入了解新模式的內(nèi)涵、原則及實(shí)施細(xì)則,并組織我們通過(guò)數(shù)多次的教學(xué)研討課,讓我們真正了解這種模式的操作方法。不管是講座還是聽(tīng)課教研,我都積極參加,積極與同行進(jìn)行研究,認(rèn)識(shí)到了新模式的確有助于培養(yǎng)學(xué)生自主學(xué)習(xí)的能力,有助于培養(yǎng)學(xué)生的合作意識(shí),有助于學(xué)生學(xué)習(xí)能力的提高,有助于切實(shí)提高課堂效率。于是,我就積極在自己的課堂上進(jìn)行嘗試,努力實(shí)現(xiàn)學(xué)生主體、教師主導(dǎo)的高效課堂。
二、把課堂還給學(xué)生
每節(jié)課上,我都不斷地提醒自己:“要放手,還給學(xué)生更多的學(xué)習(xí)時(shí)間。學(xué)生會(huì)的,教師不講。學(xué)生能說(shuō)出來(lái)的,教師不說(shuō)。學(xué)生通過(guò)談?wù)撃芙鉀Q的,就讓學(xué)生討論解決。”有了這樣的意識(shí),課上,學(xué)生活動(dòng)的機(jī)會(huì)多了,學(xué)生讀書(shū)的時(shí)間有了,學(xué)生合作的機(jī)會(huì)有了,學(xué)生自主學(xué)習(xí)、獨(dú)立解決問(wèn)題的能力提高了。課上,我只挑關(guān)鍵性的問(wèn)題、共性問(wèn)題組織教學(xué),充分發(fā)揮激勵(lì)評(píng)價(jià)的作用,讓學(xué)生盡情地
展示自己。這樣,學(xué)生的學(xué)習(xí)熱情高漲,誰(shuí)都想表現(xiàn)自己,誰(shuí)都想得到大家的認(rèn)可,學(xué)習(xí)效果有了提高。
三、把課前的準(zhǔn)備做充分
每節(jié)課的教學(xué),都需要教師事先的精心準(zhǔn)備。我們的教學(xué)模式更是如此,哪怕就是指導(dǎo)學(xué)生怎樣預(yù)習(xí)。我剛開(kāi)始帶的學(xué)生第一次接觸預(yù)習(xí),學(xué)生不知道該怎樣下手,所以,手把手地教給方法就顯得尤為重要。我為了讓學(xué)生學(xué)會(huì)預(yù)習(xí),我不怕耽誤課堂時(shí)間,親自在課堂上對(duì)學(xué)生預(yù)習(xí)的每一步進(jìn)行指導(dǎo),比如,我告訴學(xué)生要通過(guò)自己拼讀音標(biāo)來(lái)學(xué)會(huì)讀單詞,要通過(guò)英漢互譯來(lái)熟練掌握單詞。我還要親自在課堂上指導(dǎo)學(xué)生如何寫(xiě)預(yù)習(xí)筆記,如此反復(fù),雖然學(xué)生的預(yù)習(xí)還是不能完全放手,但是,看到相當(dāng)一部分學(xué)生已經(jīng)開(kāi)始自主地預(yù)習(xí)下一單元時(shí),我還是感到很欣慰,畢竟小進(jìn)步也比原地踏步強(qiáng)。
針對(duì)這幾年的英語(yǔ)教學(xué),我也有點(diǎn)自己的看法:
一、靠持續(xù)不斷的語(yǔ)言知識(shí),而不是“玩”來(lái)培養(yǎng)學(xué)生持久的興趣初中英語(yǔ)教學(xué)是要重視培養(yǎng)興趣,但單靠唱歌游戲不能培養(yǎng)學(xué)生持久的興趣。新鮮勁兒一過(guò),孩子們就會(huì)厭倦。所以,唱歌游戲應(yīng)該作為初中學(xué)生學(xué)習(xí)英語(yǔ)語(yǔ)言知識(shí)、技能的一些手段,而不是培養(yǎng)興趣的手段。我們可以采用多種手段幫助學(xué)生在記憶力強(qiáng)的時(shí)期多記單詞,多學(xué)習(xí)語(yǔ)言規(guī)則,并盡可能多創(chuàng)造模仿的機(jī)會(huì),提高學(xué)生的語(yǔ)音和語(yǔ)調(diào)。在英語(yǔ)學(xué)習(xí)中,聽(tīng)、說(shuō)、讀、寫(xiě)、譯五種能力是可以互補(bǔ)的。真正做到聽(tīng)說(shuō)先行,讀寫(xiě)跟上。光聽(tīng)說(shuō)不讀寫(xiě),很難收到高效。只靠模仿不培養(yǎng)學(xué)習(xí)能力,也難減輕學(xué)習(xí)負(fù)擔(dān)。所以初中學(xué)生還是應(yīng)
當(dāng)認(rèn)真進(jìn)行語(yǔ)言學(xué)習(xí)。
二、英語(yǔ)應(yīng)用能力需要相應(yīng)的詞匯!安粚W(xué)習(xí)語(yǔ)言規(guī)則、不掌握相當(dāng)數(shù)量的詞匯,英語(yǔ)應(yīng)用能力就是空中樓閣”。目前在中學(xué)的低年級(jí)的英語(yǔ)教學(xué)中,不要求學(xué)生掌握詞匯,而只要求學(xué)生能根據(jù)提示或圖片說(shuō)出該單詞,其本質(zhì)無(wú)非是要學(xué)生們死記硬背,鸚鵡學(xué)舌。由于學(xué)生們沒(méi)有相應(yīng)的讀音規(guī)則訓(xùn)練,不熟悉詞匯的拼寫(xiě)規(guī)則,單詞的音、形、意三者不能有效的結(jié)合在一起,因而導(dǎo)致了單詞記憶的困難,并成了中學(xué)生學(xué)英語(yǔ)的瓶頸。
三、中學(xué)英語(yǔ)教師應(yīng)有發(fā)展意識(shí)一向以來(lái),人們中學(xué)英語(yǔ)教師的語(yǔ)言知識(shí)能力要求不高,認(rèn)為中學(xué)英語(yǔ)簡(jiǎn)單,不需要太的語(yǔ)言功底,只要有良的教學(xué)技能就可以了。其實(shí)時(shí)代在進(jìn)步,社會(huì)在發(fā)展,同樣英語(yǔ)作為人們最廣泛的'交際用語(yǔ)之一,更是隨著高科技的迅猛發(fā)展而日新月異地變化著。如果我們的英語(yǔ)教師故步自封,不求進(jìn)取,那么不但自己的語(yǔ)言知識(shí)很快陳舊落伍,誤人子弟,而且會(huì)被時(shí)代所淘汰。“changing english in the changing world”,F(xiàn)代英語(yǔ)的變化,特別是口語(yǔ)方面的變化可從以下幾個(gè)方面體現(xiàn)出來(lái):
1、隨著人們生活節(jié)奏的不斷加快,更因?yàn)閲?guó)際互聯(lián)的形成,人們之間的交際變得越來(lái)越簡(jiǎn)捷。說(shuō)話簡(jiǎn)單快捷,是現(xiàn)代人生活的一大特征。現(xiàn)代英語(yǔ)在這方面的變化表現(xiàn)為“一字多用”。
2、隨著現(xiàn)代科學(xué)技術(shù)的迅猛發(fā)展,現(xiàn)代英語(yǔ)詞匯急劇增加,并且我們發(fā)現(xiàn),現(xiàn)代英語(yǔ)詞匯有相當(dāng)一部分是取得新義的舊詞,如,“input”(輸入電子計(jì)算機(jī)的數(shù)據(jù)),“store”(電子計(jì)算機(jī)的儲(chǔ)存器),“drive”(計(jì)算機(jī)驅(qū)動(dòng)器)等。
3、英國(guó)英語(yǔ)和美國(guó)英語(yǔ)之間的距離越來(lái)越小。也許是美國(guó)對(duì)世界政治、經(jīng)濟(jì)影響日益強(qiáng)大的原因,美國(guó)英語(yǔ)的影響也越來(lái)越大,特別是對(duì)青少年的影響越來(lái)越大,他們以使用美語(yǔ)和發(fā)美國(guó)音為時(shí)髦。
當(dāng)然,在實(shí)施新的教學(xué)模式的過(guò)程中我也有些困惑,譬如說(shuō)學(xué)生由于作業(yè)量的增多而忽略了預(yù)習(xí),導(dǎo)致課堂上不下去課的情況,我想,學(xué)校會(huì)為我們的教學(xué)模式的實(shí)施創(chuàng)造很的條件的,相信在不久的將來(lái),我們可以把教學(xué)模式變成我們自己的模式,
在教學(xué)上更上一層樓
設(shè)計(jì)模式心得體會(huì)5
剛學(xué)幾天就有一些淺薄的心得了。
在學(xué)過(guò)的幾種設(shè)計(jì)模式中(目前為止,本人只學(xué)過(guò)創(chuàng)建性模式),每一種設(shè)計(jì)模式都會(huì)有一種具體的應(yīng)用場(chǎng)景,每一種場(chǎng)景描述的都是一種需求變化。設(shè)計(jì)模式就是用來(lái)解決這些變化的。
只要客戶有新的需求,你的程序就要發(fā)生改變,不管你用什么方法,這個(gè)改變是避免不了的。關(guān)鍵是你如何是解決這種變化!設(shè)計(jì)模式就是尋求一種通用的較的方法來(lái)解決這種變化而不是避免這種變化,并不是你應(yīng)用了設(shè)計(jì)模式,你的系統(tǒng)就不會(huì)發(fā)生變化了。
面向?qū)ο蟮木幊逃腥髾C(jī)制,我個(gè)人認(rèn)為,設(shè)計(jì)模式很的利用了其中的“封裝與多態(tài)”(當(dāng)然并不是所有的設(shè)計(jì)模式都是這樣的,也不是說(shuō)繼承就沒(méi)用,繼承在三大機(jī)制排第一呀,是基本的),比如工廠方法模式和生成器模式!胺庋b”的意義不僅僅在于封裝代碼的實(shí)現(xiàn),更重要的是“封裝”系統(tǒng)中變化的部分。設(shè)計(jì)模式回答了怎么樣去“封裝”這種變化。
在一個(gè)系統(tǒng)中,總會(huì)有一部分經(jīng)常發(fā)生變化,相對(duì)的,也總有一個(gè)部分是改變頻率較低的,我們可以在某種圍內(nèi)將其理解為不改變的部分。設(shè)計(jì)模式要作的事情就是把“變化”的部分封裝起來(lái),實(shí)現(xiàn)將“變化”的部分與“不變化”的部隔離,這樣,“變化”的部分在發(fā)生變化時(shí),不會(huì)影響到“不改變”的'部分。如果你也學(xué)過(guò)設(shè)計(jì)模式,那你可能跟我有同感。設(shè)計(jì)模式解決變化的途徑可以概括為兩步(純屬個(gè)人見(jiàn)解):一是轉(zhuǎn)移變化,二是轉(zhuǎn)化變化。
首先是“轉(zhuǎn)移變化”。
簡(jiǎn)單的說(shuō)就是把a(bǔ)部分的變化轉(zhuǎn)移到b部分,請(qǐng)b去變化,讓a不發(fā)生變化。在程序中就是將變化從調(diào)用者轉(zhuǎn)移到被調(diào)用者。比如,你有一個(gè)類scene,這個(gè)類用于顯現(xiàn)一種風(fēng)格的游戲場(chǎng)景,調(diào)用程序?qū)嵗@個(gè)類并使用它。如果有一天,需求改變了,當(dāng)前風(fēng)格的游戲場(chǎng)景顏色太冷了,我需要改變當(dāng)前場(chǎng)景的顏色。這個(gè)時(shí)候你要決定,要讓誰(shuí)去發(fā)生變化?是讓客戶調(diào)用程序去改變scene類的顏色屬性呢,還是讓你的類scene發(fā)生變化?設(shè)計(jì)模式回答的是,請(qǐng)scene發(fā)生變化,調(diào)用者不發(fā)生變化。
為什么要這樣回答,因?yàn)檫@個(gè)時(shí)候,你的系統(tǒng)可能已經(jīng)交付用戶了,如果讓調(diào)用者發(fā)生變化,那整個(gè)系統(tǒng)都要發(fā)生變化。(這里討論只是一個(gè)簡(jiǎn)單的應(yīng)用,實(shí)際情況中往往沒(méi)有這里簡(jiǎn)單。如果實(shí)際情況是這么簡(jiǎn)單的話,設(shè)計(jì)模式估計(jì)就沒(méi)有用處了。)
然后是“轉(zhuǎn)化變化”。
確定了要改動(dòng)scene,那要怎么樣去改scene呢?直接改嗎?當(dāng)然不行,如果是這樣改,那還不如讓調(diào)用者去設(shè)置scene的某個(gè)屬性呢,反正都要重新部署。那要怎么改?“擴(kuò)展”,把這種“改變”轉(zhuǎn)化為“擴(kuò)展”。你不是要另外一種
scene嗎?那我重新為你設(shè)計(jì)一個(gè)sence并生成。dll交付你,然后讓現(xiàn)有的程序去調(diào)用這個(gè)scene。當(dāng)然,這時(shí)可能需要調(diào)用者稍微的發(fā)生一下變化,比如開(kāi)始調(diào)用者是直接調(diào)用scene來(lái)呈現(xiàn)場(chǎng)景的,現(xiàn)在將其改為根據(jù)配置件來(lái)決定要呈現(xiàn)那種scene。但是如果之前你已經(jīng)考慮到這個(gè)問(wèn)題了,那調(diào)用者是不需要發(fā)生任何變化的,因?yàn)檎{(diào)用者是根據(jù)配置來(lái)決定所呈現(xiàn)的場(chǎng)景,需求發(fā)生彎化,只需要改變配置件(可能是一個(gè)xml),把調(diào)用者與新添的scene關(guān)聯(lián)即可,這樣一來(lái),“改動(dòng)”就變?yōu)椤皵U(kuò)展”,其帶來(lái)的處也是顯而易見(jiàn)的,這也就是所謂的“開(kāi)閉”原則。
以上字完全是本人理解,隨著不斷的學(xué)習(xí),我想這么章估計(jì)要被改多次,這是一個(gè)學(xué)習(xí)的過(guò)程。理解錯(cuò)了、寫(xiě)錯(cuò)了都不要緊,關(guān)鍵是你怎么樣去面對(duì)這種錯(cuò)誤!是拒絕承認(rèn)錯(cuò)誤還是正視錯(cuò)誤?這也是設(shè)計(jì)模式回答的問(wèn)題。
設(shè)計(jì)模式心得體會(huì)6
7月初的一個(gè)周末,準(zhǔn)確的說(shuō)應(yīng)該是7月1號(hào)周六,在上看到一本《大話設(shè)計(jì)模式》的書(shū),而且看到很多很的評(píng)論,于是乎,下載了電子書(shū)看看,一下子看了幾章之后,對(duì)設(shè)計(jì)模式有了個(gè)了解,于是繼續(xù)上搜些其他資料,進(jìn)一步了解設(shè)計(jì)模式。
最終結(jié)論:設(shè)計(jì)模式是個(gè)東西,具體怎么,一兩句話是無(wú)法概括的,也是從那天起,我就決定學(xué)習(xí)設(shè)計(jì)模式,于是就看《大話設(shè)計(jì)模式》,至七月十多號(hào),大概看了一百多頁(yè)后,感覺(jué)有點(diǎn)難,有點(diǎn)看不下去的感覺(jué),于是上找其他的方法,無(wú)意間發(fā)現(xiàn)了李建忠老師的《c#設(shè)計(jì)模式縱橫談》系列講座,微軟的web cast課程,主要講解gof的23個(gè)設(shè)計(jì)模式,每個(gè)一講,加上一頭一尾,共25講,試聽(tīng)了一節(jié)課后,感覺(jué)很有用,于是就抽時(shí)間去邊聽(tīng)課邊看書(shū),并在我的博客里寫(xiě)下筆記,依賴加深印象,二來(lái)可以督促我的進(jìn)度。
三個(gè)月以來(lái),總算把設(shè)計(jì)模式學(xué)完一遍了,原計(jì)劃是兩個(gè)月學(xué)完(一星期三個(gè)模式),由于。計(jì)劃兩個(gè)月學(xué)完實(shí)際花了三個(gè)月,感觸多多,收獲多多——對(duì)c#語(yǔ)言有了更進(jìn)一步的認(rèn)識(shí),對(duì)oo的思想有了更全面的了解。
下一步在設(shè)計(jì)模式方面的計(jì)劃:鞏固并運(yùn)用設(shè)計(jì)模式,鞏固:把《大話設(shè)計(jì)模式》,《設(shè)計(jì)模式》,《設(shè)計(jì)模式——可復(fù)用的面向?qū)ο蠡A(chǔ)》,《敏捷軟件開(kāi)發(fā):原則、模式與實(shí)踐》這些書(shū)再結(jié)合起來(lái)系統(tǒng)的看一看,當(dāng)然還會(huì)去買(mǎi)一些我手頭上沒(méi)有的關(guān)于設(shè)計(jì)模式的書(shū)。運(yùn)用:部門(mén)前幾天也提倡用c#來(lái)改版vb程序,我想這是一個(gè)很的平臺(tái),正有機(jī)會(huì)把理論的東西在實(shí)際中應(yīng)用,理論加實(shí)際——唯一的學(xué)習(xí)方法......
下面對(duì)各個(gè)模式再簡(jiǎn)單總結(jié)一下:
1、創(chuàng)建型模式:
singleton:解決的是實(shí)例化對(duì)象的個(gè)數(shù)的問(wèn)題,比如抽象工廠中的`工廠、對(duì)象池等,除了singleton之外,其他創(chuàng)建型模式解決的都是new所帶來(lái)的耦合關(guān)系。
abstract factory:創(chuàng)建一系列相互依賴對(duì)象,并能在運(yùn)行時(shí)改變系列。
factory method:創(chuàng)建單個(gè)對(duì)象,在abstract factory有使用到。
prototype:通過(guò)拷貝原型來(lái)創(chuàng)建新的對(duì)象。
factory method,abstract factory,builder都需要一個(gè)額外的工廠類來(lái)負(fù)責(zé)實(shí)例化“一邊對(duì)象”,而prototype則是通過(guò)原型(一個(gè)特殊的工廠類)來(lái)克隆“易變對(duì)象”。
如果遇到“易變類”,起初的設(shè)計(jì)通常從factory method開(kāi)始,當(dāng)遇到更多的復(fù)雜變化時(shí),再考慮重構(gòu)為其他三種工廠模式(factory method,abstract factory,builder)。
2、結(jié)構(gòu)性模式
adapter:注重轉(zhuǎn)換接口,將不吻合的接口適配對(duì)象,用于舊代碼復(fù)用、類庫(kù)遷移等。
bridge:注重實(shí)現(xiàn)抽象和實(shí)現(xiàn)的分離,支持對(duì)象多維度的變化。
composite:注重同意接口,將“一對(duì)多”的關(guān)系轉(zhuǎn)化為“一對(duì)一”的關(guān)系,屏蔽對(duì)象容器內(nèi)部實(shí)現(xiàn)結(jié)構(gòu),實(shí)現(xiàn)對(duì)象和對(duì)象容器使用的一致性。
decorator:注重穩(wěn)定接口,在此前提下為對(duì)象擴(kuò)展功能,實(shí)現(xiàn)對(duì)象功能的擴(kuò)展,避免子類膨脹。
facade:注重簡(jiǎn)化接口,屏蔽各子系統(tǒng)的復(fù)雜性,提供更高層接口供客戶訪問(wèn)。
flyweight:注重保留接口,在內(nèi)部使用共享技術(shù)對(duì)對(duì)象存儲(chǔ)進(jìn)行優(yōu)化(通過(guò)共享大量細(xì)粒度對(duì)象,提供系統(tǒng)性能)。
proxy:注重假借接口,通過(guò)增加間接代理,實(shí)現(xiàn)更多控制,屏蔽復(fù)雜性。
3 、行為型模式
template method:封裝算法結(jié)構(gòu),定義算法骨架,支持算法子步驟變化。
strategy:注重封裝算法,支持算法的變化,通過(guò)封裝一系列算法,從而可以隨時(shí)獨(dú)立于客戶替換算法。
state:注重封裝與狀態(tài)相關(guān)的行為,支持狀態(tài)的變化,通過(guò)封裝對(duì)象狀態(tài),從而在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。
memento:注重封裝對(duì)象狀態(tài)變化,支持狀態(tài)保存、恢復(fù)。
mediator:注重封裝對(duì)象間的交互,通過(guò)封裝一系列對(duì)象之間的復(fù)雜交互,使他們不需要顯式相互引用,實(shí)現(xiàn)解耦。
chain of responsibility:注重封裝對(duì)象責(zé)任,支持責(zé)任的變化,通過(guò)動(dòng)態(tài)構(gòu)建職責(zé)鏈,實(shí)現(xiàn)事務(wù)處理。
command:注重將請(qǐng)求封裝為對(duì)象,支持請(qǐng)求的變化,通過(guò)將一組行為抽象為對(duì)象,實(shí)現(xiàn)行為請(qǐng)求者和行為實(shí)現(xiàn)者之間的解耦。
iterator:注重封裝特定領(lǐng)域變化,支持集合的變化,屏蔽集合對(duì)象內(nèi)部復(fù)雜結(jié)構(gòu),提供客戶程序?qū)λ耐该鞅闅v。
interpreter:注重封裝特定領(lǐng)域變化,支持領(lǐng)域問(wèn)題的頻繁變化,將特定領(lǐng)域的問(wèn)題表達(dá)為某種語(yǔ)法規(guī)則下的句子,然后構(gòu)建一個(gè)解釋器來(lái)解釋這樣的句子,從而達(dá)到解決問(wèn)題的目的。
observer:注重封裝對(duì)象通知,支持通信對(duì)象的變化,實(shí)現(xiàn)對(duì)象狀態(tài)改變,通知依賴它的對(duì)象并更新。
visitor:注重封裝對(duì)象操作變化,支持在運(yùn)行時(shí)為類結(jié)構(gòu)添加新的操作,在類層次結(jié)構(gòu)中,在不改變各類的前提下定義作用于這些類實(shí)例的新的操作。
正確對(duì)待模式:
設(shè)計(jì)模式建立在對(duì)系統(tǒng)變化點(diǎn)的基礎(chǔ)上進(jìn)行,哪里有變化,哪里就應(yīng)用設(shè)計(jì)模式。
設(shè)計(jì)模式應(yīng)該以演化的方式來(lái)獲得,系統(tǒng)的變化點(diǎn)往往是經(jīng)過(guò)不斷演化才能準(zhǔn)確定位。
不能為了模式而模式,設(shè)計(jì)模式是一種軟件設(shè)計(jì)的軟力量,而非規(guī)標(biāo)準(zhǔn),不應(yīng)夸大設(shè)計(jì)模式的作用。
【設(shè)計(jì)模式心得體會(huì)】相關(guān)文章:
課堂教學(xué)模式心得體會(huì)09-05
阿米巴經(jīng)營(yíng)模式心得體會(huì)(精選10篇)10-12
什么是場(chǎng)景模式03-23
英語(yǔ)“有效課堂”教學(xué)模式研究心得體會(huì)11-10
四合一教學(xué)模式地理教學(xué)心得體會(huì)11-10
考研大軍重啟“高考模式”04-26
商業(yè)模式計(jì)劃書(shū)12-08
網(wǎng)店商業(yè)模式方案范文12-02