日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

23种设计模式简介_设计模式简介

發(fā)布時(shí)間:2023/12/3 asp.net 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 23种设计模式简介_设计模式简介 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

23種設(shè)計(jì)模式簡(jiǎn)介

本文是我們名為“ Java設(shè)計(jì)模式 ”的學(xué)院課程的一部分。

在本課程中,您將深入研究大量的設(shè)計(jì)模式,并了解如何在Java中實(shí)現(xiàn)和利用它們。 您將了解模式如此重要的原因,并了解何時(shí)以及如何應(yīng)用模式中的每一個(gè)。 在這里查看 !

目錄

1.簡(jiǎn)介 2.什么是設(shè)計(jì)模式 3.為什么使用它們 4.如何選擇和使用一個(gè) 5.模式分類
5.1。 創(chuàng)作模式 5.2。 結(jié)構(gòu)模式 5.3。 行為模式

1.簡(jiǎn)介

在70年代后期,一位名叫Christopher Alexander的建筑師開(kāi)始了圖案的概念。 亞歷山大(Alexander)的工作著眼于在特定環(huán)境下找到針對(duì)特定力量的解決方案的模式。

Christopher Alexander是一位土木工程師和建筑師,他的模式與建筑物的建筑師有關(guān),但是他所做的工作激發(fā)了人們對(duì)面向?qū)ο?#xff08;OO)社區(qū)的興趣,許多創(chuàng)新者開(kāi)始開(kāi)發(fā)軟件設(shè)計(jì)模式。 肯特·貝克(Kent Beck)和沃德·坎寧安(Ward Cunningham)是在OOPSLA會(huì)議上介紹Smalltalk設(shè)計(jì)模式的少數(shù)人。 詹姆斯·科普林(James Coplien)是另一位積極倡導(dǎo)模式宗旨的人。

很快,OOPSLA的模式社區(qū)開(kāi)始發(fā)展,因?yàn)樗鼮槌蓡T提供了一個(gè)共享其模式創(chuàng)新和思想的環(huán)境。 圖案運(yùn)動(dòng)發(fā)展的另一個(gè)重要論壇是肯特·貝克(Kent Beck)和格雷迪·布赫(Grady Booch)創(chuàng)立的Hillside Group。

這就是設(shè)計(jì)模式-旺盛而強(qiáng)大的社區(qū)對(duì)專業(yè)知識(shí)的積累。 這是最佳的人群采購(gòu)。 自從最初的GoF工作以來(lái),模式社區(qū)已經(jīng)發(fā)展了十多年,規(guī)模龐大且充滿活力。 Grady Booch和Celso Gonzalez一直在收集他們?cè)谛袠I(yè)中可以找到的每種模式。 到目前為止,他們有2000多個(gè)。

本課程全部關(guān)于設(shè)計(jì)模式。 在本課程中,我們將向您介紹最有用和最著名的設(shè)計(jì)模式。 在本課程中,首先我們將了解真正的設(shè)計(jì)模式。 它們有什么用? 為什么要真正使用它們,以及如何使用它們?

稍后,我們還將看到模式的組織方式,并根據(jù)其行為和結(jié)構(gòu)將其分為不同的組。

在接下來(lái)的幾課中,我們將逐一討論不同的設(shè)計(jì)模式。 我們將深入并分析每種設(shè)計(jì)模式,還將看到如何在Java中實(shí)現(xiàn)它們。

2.什么是設(shè)計(jì)模式

作為一個(gè)面向?qū)ο蟮拈_(kāi)發(fā)人員,我們可能會(huì)認(rèn)為我們的代碼包含了面向?qū)ο笳Z(yǔ)言所提供的所有好處。 我們編寫(xiě)的代碼具有足夠的靈活性,以至于我們可以對(duì)其進(jìn)行任何更改,而付出的代價(jià)則更少或更少。 我們的代碼是可重用的,因此我們可以在任何地方重用它而不會(huì)遇到任何麻煩。 我們可以輕松地維護(hù)我們的代碼,對(duì)代碼部分的任何更改都不會(huì)影響代碼的任何其他部分。

不幸的是,這些優(yōu)勢(shì)并不是憑空產(chǎn)生的。 作為開(kāi)發(fā)人員,我們有責(zé)任以一種使我們的代碼靈活,可維護(hù)和可重用的方式設(shè)計(jì)代碼。

設(shè)計(jì)是一門藝術(shù),它伴隨著經(jīng)驗(yàn)。 但是,一些高級(jí)和經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員已經(jīng)在面對(duì)和解決類似的設(shè)計(jì)問(wèn)題時(shí)已經(jīng)編寫(xiě)了一些解決方案。 這些解決方案稱為設(shè)計(jì)模式。

設(shè)計(jì)模式是設(shè)計(jì)面向?qū)ο蟠a的經(jīng)驗(yàn)。

設(shè)計(jì)模式是對(duì)常見(jiàn)問(wèn)題的通用可重用解決方案。 這些是經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員使用的最佳實(shí)踐。 模式不是完整的代碼,但可以用作可應(yīng)用于問(wèn)題的模板。 模式是可重用的; 它們可以應(yīng)用于任何領(lǐng)域的類似設(shè)計(jì)問(wèn)題。 換句話說(shuō),我們可以將模式視為包含重復(fù)出現(xiàn)的設(shè)計(jì)問(wèn)題及其解決方案的正式文檔。 在一個(gè)實(shí)際環(huán)境中使用的模式也可以在其他環(huán)境中重用。

克里斯托弗曾說(shuō)過(guò):“每種模式都描述了一個(gè)在我們的環(huán)境中反復(fù)發(fā)生的問(wèn)題,然后描述了該問(wèn)題的解決方案的核心,這樣您就可以使用該解決方案一百萬(wàn)次,而無(wú)需做任何事情。以相同的方式兩次”。

通常,模式具有四個(gè)基本要素:

  • 模式名稱 ,用于為模式提供一個(gè)單一且有意義的名稱,該名稱定義了設(shè)計(jì)問(wèn)題及其解決方案。 命名設(shè)計(jì)模式有助于將自身輕松引用給其他人。 提供文檔也變得很容易,正確的詞匯使設(shè)計(jì)更容易思考。
  • 問(wèn)題描述了何時(shí)應(yīng)用圖案。 它解釋了問(wèn)題及其背景。 它可能描述特定的設(shè)計(jì)問(wèn)題,例如如何將算法表示為對(duì)象。 它可能描述了不靈活設(shè)計(jì)的癥狀的類或?qū)ο蠼Y(jié)構(gòu)。 有時(shí),問(wèn)題將包括在應(yīng)用此模式有意義之前必須滿足的條件列表。
  • 解決方案描述了構(gòu)成設(shè)計(jì)的元素,它們之間的關(guān)系,職責(zé)和協(xié)作。 解決方案不是完整的代碼,但可以作為模板使用代碼來(lái)實(shí)現(xiàn)。 相反,該模式提供了一個(gè)設(shè)計(jì)問(wèn)題的抽象描述,以及元素(在本例中為類和對(duì)象)的一般布置如何解決該問(wèn)題的抽象描述。
  • 應(yīng)用模式的結(jié)果和后果 。 軟件的后果通常涉及空間和時(shí)間的權(quán)衡。 他們也可能解決語(yǔ)言和實(shí)施問(wèn)題。 由于重用通常是面向?qū)ο笤O(shè)計(jì)中的一個(gè)因素,因此模式的后果包括其對(duì)系統(tǒng)的靈活性,可擴(kuò)展性或可移植性的影響。 明確列出這些后果有助于您理解和評(píng)估它們。
  • 3.為什么使用它們

    靈活性:使用設(shè)計(jì)模式,您的代碼將變得靈活。 由于對(duì)象之間的松散耦合,這有助于提供正確的抽象級(jí)別,這使您的代碼易于更改。

    可重用性:松散耦合且內(nèi)聚的對(duì)象和類可使您的代碼更可重用。 與高度耦合的代碼相比,這種代碼變得易于測(cè)試。

    共享詞匯表:共享詞匯表可輕松與其他團(tuán)隊(duì)成員共享您的代碼和思想。 它使與代碼相關(guān)的團(tuán)隊(duì)成員之間有了更多的了解。

    捕獲最佳實(shí)踐:設(shè)計(jì)模式捕獲已成功應(yīng)用于問(wèn)題的解決方案。 通過(guò)學(xué)習(xí)這些模式和相關(guān)問(wèn)題,一個(gè)沒(méi)有經(jīng)驗(yàn)的開(kāi)發(fā)人員會(huì)學(xué)到很多有關(guān)軟件設(shè)計(jì)的知識(shí)。

    設(shè)計(jì)模式使重用成功的設(shè)計(jì)和架構(gòu)變得更加容易。

    通過(guò)將成熟的技術(shù)表示為設(shè)計(jì)模式,可以使新系統(tǒng)的開(kāi)發(fā)人員更容易使用它們。 設(shè)計(jì)模式可幫助您選擇使系統(tǒng)可重用的設(shè)計(jì)替代方案,并避免損害可重用性的替代方案。 設(shè)計(jì)模式甚至可以通過(guò)提供對(duì)類和對(duì)象交互及其基本意圖的明確說(shuō)明來(lái)改善現(xiàn)有系統(tǒng)的文檔編制和維護(hù)。 簡(jiǎn)而言之,設(shè)計(jì)模式可幫助設(shè)計(jì)師更快地“正確”設(shè)計(jì)。

    4.如何選擇和使用一個(gè)

    有多種設(shè)計(jì)模式可供選擇; 要選擇一個(gè),您必須對(duì)其中的每一個(gè)都有很好的了解。 許多設(shè)計(jì)模式看起來(lái)非常相似。 它們解決了幾乎類似類型的設(shè)計(jì)問(wèn)題,并且具有類似的實(shí)現(xiàn)。 為了實(shí)現(xiàn)針對(duì)特定設(shè)計(jì)問(wèn)題的正確設(shè)計(jì)模式,必須對(duì)它們有非常深刻的理解。

    首先,您需要確定所面臨的設(shè)計(jì)問(wèn)題。 設(shè)計(jì)問(wèn)題可以分為創(chuàng)造性,結(jié)構(gòu)性或行為性。 根據(jù)此類別,您可以過(guò)濾模式并選擇適當(dāng)?shù)哪J健?例如:

  • 一個(gè)類的實(shí)例太多,它們僅表示單個(gè)事物,這些對(duì)象的屬性中的值相同,并且它們僅用作只讀 :您可以針對(duì)此設(shè)計(jì)問(wèn)題選擇Singleton模式,以確保僅整個(gè)應(yīng)用程序的單個(gè)實(shí)例。 它還有助于減小內(nèi)存大小。
  • 類之間過(guò)于依賴。 一個(gè)類中的更改會(huì)影響所有其他從屬類:您可以使用Bridge,Mediator或Command來(lái)解決此設(shè)計(jì)問(wèn)題。
  • 在代碼的兩個(gè)不同部分中有兩個(gè)不同的不兼容接口,您需要將一個(gè)接口轉(zhuǎn)換為另一個(gè)接口,客戶端代碼使用該接口使整個(gè)代碼正常工作:適配器模式適合此問(wèn)題。
  • 一種設(shè)計(jì)模式可以用于解決多個(gè)設(shè)計(jì)問(wèn)題,并且一個(gè)設(shè)計(jì)問(wèn)題可以通過(guò)多個(gè)設(shè)計(jì)模式解決。 可能會(huì)有很多設(shè)計(jì)問(wèn)題和解決方案,但是,選擇合適的模式取決于您對(duì)設(shè)計(jì)模式的了解和理解。 這也取決于您已經(jīng)擁有的代碼。

    5.模式分類

    設(shè)計(jì)模式可以分為以下幾類:

  • 創(chuàng)作模式
  • 結(jié)構(gòu)模式
  • 行為模式
  • 創(chuàng)作模式

    創(chuàng)新設(shè)計(jì)模式用于設(shè)計(jì)對(duì)象的實(shí)例化過(guò)程。 創(chuàng)建模式使用繼承來(lái)改變對(duì)象的創(chuàng)建。

    這些模式中有兩個(gè)重復(fù)出現(xiàn)的主題。 首先,它們都封裝了有關(guān)系統(tǒng)使用哪些具體類的知識(shí)。 其次,它們隱藏了這些類的實(shí)例是如何創(chuàng)建和組合的。 整個(gè)系統(tǒng)對(duì)對(duì)象的所有了解都是由抽象類定義的它們的接口。 因此,創(chuàng)建模式使您在創(chuàng)建內(nèi)容,創(chuàng)建者,創(chuàng)建方式和時(shí)間方面具有很大的靈活性。

    在某些情況下,兩個(gè)或多個(gè)模式看起來(lái)很適合解決問(wèn)題。 在其他時(shí)候,這兩種模式可以互補(bǔ)。 Builder可以與其他模式一起使用,以實(shí)現(xiàn)要構(gòu)建的組件。

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

    結(jié)構(gòu)模式與類和對(duì)象如何構(gòu)成更大的結(jié)構(gòu)有關(guān)。 結(jié)構(gòu)類模式使用繼承來(lái)構(gòu)成接口或?qū)崿F(xiàn)。 作為一個(gè)簡(jiǎn)單的示例,請(qǐng)考慮多重繼承如何將兩個(gè)或多個(gè)類混合為一個(gè)。 結(jié)果是一個(gè)結(jié)合了其父類屬性的類。 這種模式對(duì)于使獨(dú)立開(kāi)發(fā)的類庫(kù)協(xié)同工作特別有用。

    結(jié)構(gòu)對(duì)象模式不是組成接口或?qū)崿F(xiàn),而是描述組成對(duì)象以實(shí)現(xiàn)新功能的方法。 對(duì)象合成的附加靈活性來(lái)自于在運(yùn)行時(shí)更改合成的能力,而靜態(tài)類合成則無(wú)法實(shí)現(xiàn)。

    行為模式

    行為模式與算法以及對(duì)象之間的職責(zé)分配有關(guān)。 行為模式不僅描述對(duì)象或類的模式,還描述它們之間的通信模式。 這些模式表征了復(fù)雜的控制流,在運(yùn)行時(shí)很難遵循。 它們將您的注意力從控制流上移開(kāi),讓您僅專注于對(duì)象的互連方式。

    行為對(duì)象模式使用對(duì)象組成而不是繼承。 一些描述了一組對(duì)等對(duì)象如何協(xié)作執(zhí)行一項(xiàng)單個(gè)對(duì)象無(wú)法單獨(dú)執(zhí)行的任務(wù)。 這里的一個(gè)重要問(wèn)題是對(duì)等對(duì)象如何相互了解。 對(duì)等體可以保持彼此之間的顯式引用,但這將增加它們之間的耦合。 在極端情況下,每個(gè)對(duì)象都會(huì)彼此了解。 介體模式通過(guò)在對(duì)等體之間引入介體對(duì)象來(lái)避免這種情況。 介體提供松耦合所需的間接定向。

    下表顯示了各自類別下的模式列表:

    創(chuàng)作模式 結(jié)構(gòu)模式 行為模式
    抽象工廠 適配器 責(zé)任鏈
    建造者 命令
    工廠方法 綜合 口譯員
    原型 裝飾器 迭代器
    辛格爾頓 正面 調(diào)解員
    飛行重量 紀(jì)念
    代理 觀察者
    戰(zhàn)略
    模板方法
    游客

    模式清單


    翻譯自: https://www.javacodegeeks.com/2015/09/introduction-to-design-patterns.html

    23種設(shè)計(jì)模式簡(jiǎn)介

    總結(jié)

    以上是生活随笔為你收集整理的23种设计模式简介_设计模式简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。