最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#面向?qū)ο蟮?3種設(shè)計(jì)模式介紹

 更新時(shí)間:2022年02月18日 09:30:17   作者:Run2948  
這篇文章介紹了C#面向?qū)ο蟮?3種設(shè)計(jì)模式,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、設(shè)計(jì)模式概述

設(shè)計(jì)模式,是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類(lèi)編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。

設(shè)計(jì)模式其實(shí)就是開(kāi)發(fā)過(guò)程中常見(jiàn)問(wèn)題的解決方案,是解決問(wèn)題的思路。學(xué)習(xí)設(shè)計(jì)模式能更優(yōu)雅的解決面向?qū)Τ绦蜷_(kāi)發(fā)設(shè)計(jì)問(wèn)題。

二、面向?qū)ο?3種設(shè)計(jì)模式

創(chuàng)建型模式

關(guān)注對(duì)象的創(chuàng)建

模式名稱(chēng)中文名稱(chēng)基本定義
Singleton單例模式保證一個(gè)類(lèi)僅有一個(gè)實(shí)例,并且提供一個(gè)全局訪問(wèn)點(diǎn)。
Factory Method工廠方法模式定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定將哪一個(gè)類(lèi)實(shí)例化。工廠方法模式使一個(gè)類(lèi)的實(shí)例化延遲到子類(lèi)。
Abstract Factory抽象工廠提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴(lài)對(duì)象的接口,而無(wú)需指定具體的類(lèi)。
Builder建造者模式講一個(gè)復(fù)雜對(duì)象的構(gòu)建和他的表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示
Prototype原型模式用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),并且通過(guò)拷貝這個(gè)原型來(lái)創(chuàng)建新的對(duì)象。

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

關(guān)注類(lèi)與對(duì)象之間的組合

模式名稱(chēng)中文名稱(chēng)基本定義
Adapter適配器模式將一個(gè)類(lèi)的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。適配器使得原來(lái)不兼容的接口可以一起工作。
Bridge橋接模式將抽象部分與它的實(shí)現(xiàn)部分分離,使他們都可以獨(dú)立變化
Composite組合模式將對(duì)象組合成樹(shù)形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。組合模式使得客戶對(duì)單個(gè)對(duì)象對(duì)單個(gè)對(duì)象和復(fù)合對(duì)象的使用具有一致性。
Decorator裝飾器模式動(dòng)態(tài)的給一個(gè)對(duì)象添加一些額外的職責(zé)。就擴(kuò)展方式而言,裝飾器模式比生成子類(lèi)的方式更靈活
Facade外觀模式為子系統(tǒng)的一組接口提供一個(gè)一致的界面,F(xiàn)acade模式定義了一個(gè)高層的接口,這個(gè)接口使得這一個(gè)子系統(tǒng)更容易使用。
Flyweight享元模式運(yùn)用共享技術(shù)有效的支持大量細(xì)粒度對(duì)象。
Proxy代理模式為其他對(duì)象提供一個(gè)代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。

行為型模式

關(guān)注對(duì)象和行為的分離

模式名稱(chēng)中文名稱(chēng)基本定義
Interpreter解釋器模式給定一個(gè)語(yǔ)言,定義它的文法的一種表示,并定義一個(gè)解釋器,該解釋器使用該表示來(lái)解釋語(yǔ)言中的例子。
Template Method模板方法模式定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類(lèi)中。模板方法使得子類(lèi)可以不改變一個(gè)算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟
Chain of Responsibility職責(zé)鏈模式為解除請(qǐng)求的發(fā)送者和接收者之間的耦合,而使多個(gè)對(duì)象都有機(jī)會(huì)處理這個(gè)請(qǐng)求。講這些對(duì)象連著一個(gè)鏈,并沿著這條鏈傳遞該請(qǐng)求,直到一個(gè)對(duì)象處理它。
Command命令模式將一個(gè)請(qǐng)求封裝成一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化,對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可取消操作。
Iterator迭代器模式提供一種方法順序訪問(wèn)一個(gè)聚合對(duì)象中的各個(gè)元素,而又不需要暴露該對(duì)象的內(nèi)部表示。
Mediator媒介模式用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯示的相互引用,從而使其耦合松散,而且可以獨(dú)立地改變他們之間的交互。
Memento備忘錄模式在不破壞封裝性的前提下,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài),并在這個(gè)對(duì)象之外保存這個(gè)狀態(tài)。這樣就可以將這個(gè)對(duì)象恢復(fù)到保存的狀態(tài)。
Observer觀察者模式定義對(duì)象間的一種一對(duì)多的依賴(lài)關(guān)系,以便當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴(lài)于它的對(duì)象都得到通知并自動(dòng)刷新。
State狀態(tài)模式允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變他的行為。對(duì)象看起來(lái)似乎修改了他所屬的類(lèi)。
Strategy策略模式定義一系列算法,把它們一個(gè)個(gè)封裝起來(lái),并且使他們可相互替換,本模式使得算法的變化可獨(dú)立于他的客戶
Visitor訪問(wèn)者模式表示一個(gè)作用于某對(duì)象結(jié)構(gòu)的各元素的操作。他使你可以在不改變?cè)氐念?lèi)的前提下定義作用于這些元素的操作

三、設(shè)計(jì)模式六大原則詳細(xì)解析

  • 單一職責(zé):一個(gè)類(lèi)只負(fù)責(zé)一 項(xiàng)職責(zé)
  • 里氏替換原則:子類(lèi)可以擴(kuò)展父類(lèi)的功能,但不能改變?cè)懈割?lèi)的功能。盡量用子類(lèi)替換父類(lèi)
  • 依賴(lài)倒置原則:抽象不應(yīng)該依賴(lài)于細(xì)節(jié),細(xì)節(jié)應(yīng)當(dāng)依賴(lài)于抽象,面向接口編程
  • 接口隔離原則:使用多個(gè)專(zhuān)門(mén)的接口,而不使用單一的總接口。即 客戶端不應(yīng)該依賴(lài)于那些它不需要的接口
  • 迪米特原則:最少知道原則,盡量降低類(lèi)與類(lèi)之間的耦合;一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象有最少的了解
  • 開(kāi)閉原則:對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉,能擴(kuò)展不修改

四、源碼倉(cāng)庫(kù)

https://github.com/Run2948/CSharpDesignPatterns.git

到此這篇關(guān)于C#面向?qū)ο?3種設(shè)計(jì)模式介紹的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#查看/寫(xiě)入日志到Windows事件查看器的操作方法

    C#查看/寫(xiě)入日志到Windows事件查看器的操作方法

    Windows 操作系統(tǒng)將與計(jì)算機(jī)的系統(tǒng)性能、應(yīng)用程序和安全方面相關(guān)的每個(gè)事件記錄在 C:\WINDOWS\system32\winevt 的日志中,事件查看器從這些原始事件日志中讀取信息,然后以可讀格式呈現(xiàn)信息,本文介紹了C#如何查看/寫(xiě)入日志到Windows事件查看器,需要的朋友可以參考下
    2024-09-09
  • WPF數(shù)據(jù)綁定時(shí)出現(xiàn)StringFormat失效的原因和解決方法

    WPF數(shù)據(jù)綁定時(shí)出現(xiàn)StringFormat失效的原因和解決方法

    在數(shù)據(jù)綁定過(guò)程中,我們經(jīng)常會(huì)使用StringFormat對(duì)要顯示的數(shù)據(jù)進(jìn)行格式化,以便獲得更為直觀的展示效果,但在某些情況下格式化操作并未生效,所以本文介紹了WPF數(shù)據(jù)綁定時(shí)出現(xiàn)StringFormat失效的原因和解決方法,需要的朋友可以參考下
    2024-12-12
  • C#微信開(kāi)發(fā)之發(fā)送模板消息

    C#微信開(kāi)發(fā)之發(fā)送模板消息

    這篇文章主要為大家詳細(xì)介紹了C#微信開(kāi)發(fā)之發(fā)送模板消息的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#?WPF調(diào)用QT窗口的方法

    C#?WPF調(diào)用QT窗口的方法

    本文主要介紹了C#?WPF調(diào)用QT窗口的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C#實(shí)現(xiàn)json的序列化和反序列化實(shí)例代碼

    C#實(shí)現(xiàn)json的序列化和反序列化實(shí)例代碼

    這篇文章主要介紹了C#實(shí)現(xiàn)json的序列化和反序列化實(shí)例代碼,有需要的朋友可以參考一下
    2013-12-12
  • C#實(shí)現(xiàn)協(xié)變和逆變案例

    C#實(shí)現(xiàn)協(xié)變和逆變案例

    這篇文章介紹了C#實(shí)現(xiàn)協(xié)變和逆變的案例,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • C#實(shí)現(xiàn)簡(jiǎn)單的窗口抖動(dòng)

    C#實(shí)現(xiàn)簡(jiǎn)單的窗口抖動(dòng)

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)單的窗口抖動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Unity 按鈕添加OnClick事件操作

    Unity 按鈕添加OnClick事件操作

    這篇文章主要介紹了Unity 按鈕添加OnClick事件操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • C# 使用AE獲取feature的屬性及字段操作

    C# 使用AE獲取feature的屬性及字段操作

    這篇文章主要介紹了C# 使用AE獲取feature的屬性及字段操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • c#操作xml文件示例

    c#操作xml文件示例

    對(duì)于XML讀寫(xiě)操作,項(xiàng)目中經(jīng)常要用到,之前木有好好總結(jié)過(guò),例如LINQ TO XML也用過(guò),這次無(wú)意發(fā)現(xiàn)XPATH對(duì)于XML的查詢極為方便,索性把XML的操作總結(jié)以便后續(xù)方便使用
    2014-03-03

最新評(píng)論

兴业县| 峡江县| 瑞安市| 大余县| 天祝| 梁河县| 西乌珠穆沁旗| 宜宾县| 甘肃省| 集安市| 上虞市| 揭阳市| 略阳县| 平安县| 灵石县| 深泽县| 江西省| 嘉荫县| 神池县| 海安县| 兰坪| 台北市| 西青区| 错那县| 南投市| 黑水县| 青岛市| 枞阳县| 无锡市| 广元市| 广昌县| 潞西市| 牙克石市| 迁安市| 莎车县| 江门市| 裕民县| 辽源市| 苍溪县| 裕民县| 锡林浩特市|