設計模式 感想

来源:http://www.cnblogs.com/leave-one-blood/archive/2016/04/29/DesignPattern.html
-Advertisement-
Play Games

1,開篇 在剛剛學習完李建中老師的C#面向對象之設計模式縱橫談視頻之後,感想頗多,在此稍微記錄一下嘿嘿。 2,內功修煉 很多人都反映,學了設計模式就感覺好像什麼都沒學到一樣,學了就忘了,學了也不會用,然後還需要再枯燥的再去學。其實我覺得這樣是沒有真正領悟設計模式的精髓,對於修煉武功一樣,只去學一些外 ...


1,開篇  

   在剛剛學習完李建中老師的C#面向對象之設計模式縱橫談視頻之後,感想頗多,在此稍微記錄一下嘿嘿。

2,內功修煉

  很多人都反映,學了設計模式就感覺好像什麼都沒學到一樣,學了就忘了,學了也不會用,然後還需要再枯燥的再去學。其實我覺得這樣是沒有真正領悟設計模式的精髓,對於修煉武功一樣,只去學一些外在的招式,而不加強自己的內功的修煉,因此學來學去,即使招式再牛逼,也起不了太大作用,因為內功不行。內功就是我們常說的,但是卻常常容易被人忽略的東西。

  2.1,什麼是面向對象

    每個人不妨問問自己的內心,看看自己有沒有真正的理解透徹面向對象,什麼是繼承,什麼是封裝,什麼又是多態等等。自己有沒有從頭認真看過面向對象的書籍,有沒有進行深刻的練習與反思,自己到底有沒有真正的理解面向對象內容。我想當你把這些真正的明白了,真正的熟練的運用到項目中,那麼恭喜你已經完成了內功修煉的第一步!!!

  2.2,什麼是抽象-具體

    俗話說的話,依賴於抽象,不依賴於具體實現。那麼什麼才算是抽象呢,什麼又是具體的呢?這些自己心中是否有底呢。當我們Coding時,我們有沒有提前設計自己的類圖,設計自己的時序圖,有沒有深刻的分析需求,深刻的理解用戶的需求,這些都是我們要考慮的,只有深刻的理解了需求,才能談的上去抽象,去提煉。比如操作資料庫,我們都必然會設計到增刪改查方法,但是我們不確定最終項目會用什麼樣的資料庫,前期可能用mysql就夠了,但到了後期可能又要該sqlserver,後期還可能mongodb等。那麼在這裡抽象的就是資料庫的增刪改查方法,而具體的就是資料庫的種類。而我們在開發時就要依賴於抽象,而不能依賴於具體的那個資料庫。如果你真正的理解用戶需求,然後又懂得什麼是抽象和具體,以及提取出抽象的東西,那麼恭喜你,你已經學會了內功修煉第二步了!

  2.3,什麼是設計原則(我個人簡單定義為S、I、L、O、D)

    S(Single),職責單一。就是每個類只負責處理自己相關的東西。每個類只有一個讓它發生改變的原因。

    I(Interface),介面隔離。不要要一個介面負責很多事情,不要讓其污染哈哈,每個介面之間都彼此隔離。

    L(),里氏替換原則。即子類可以重寫父類。重寫後不會引起使用者的變動。

    O(Open),開放封閉原則。對擴展開放,對修改封閉。一個類如果要增加新功能,可以新增加類,但是不要修改原有的類。

    D(Dependence),依賴倒置原則。具體依賴於抽象,而不應該是抽象依賴於具體實現。

3,招式

  其實設計模式本身就是工具,每每提到設計模式,都說是23種設計模式,其實遠不止這些,只是這23種較為實用而已。設計模式只能作為你真正掌握了以上的內功心法之後的學的一種外在招式,如何體現出來你的內功,如何表達你的內功,則必須通過一定的招式,一定的方法,這裡就是設計模式。

4,總結

  總而言之,如果不懂得設計模式的精髓(設計原則),也就是不懂內功,則再學多少遍設計模式,會多少招式,我覺得也難以立足於江湖!!!!

    

  

  

 

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Python批量替換文件內容,支持嵌套文件夾 ...
  • https://www.v2ex.com/t/142644 http://stackoverflow.com/questions/10558465/memcached-vs-redis 待整理 r.get() cache.get() ...
  • 獲取【下載地址】 【免費支持更新】三大資料庫 mysql oracle sqlsever 更專業、更強悍、適合不同用戶群體【新錄針對本系統的視頻教程,手把手教開發一個模塊,快速掌握本系統】 A集成代碼生成器 [正反雙向(單表、主表、明細表、樹形表,開發利器)+快速構建表單;freemaker模版技術 ...
  • Redis真是好,其中的鍵值用起來真心強大啊有木有, 之前的文章講過搭建了redis集群 那麼咋們該如何調用單機版的redis以及集群版的redis來使用緩存服務呢? 先講講單機版的,單機版redis安裝非常簡單,不多說了,直接使用命令: 1 [root@nginx bin]# ./redis-se ...
  • 裝飾設計模式就是對已有的對象的功能進行增強 簡單小例子: 我們考慮一下使用繼承也可以對父類中的功能進行增強只需要調用super就可以調用父類的方法,那使用裝飾和繼承有什麼區別?使用繼承體系就會有點臃腫,因為當平房想要改成歐式時,還要建立子類。 Writer |--FileWriter |--Buff ...
  • 在介紹Dubbo的內部邏輯的時候提到很多次註冊中心的概念.實現註冊中心的有很多,主要是以下四個註冊中心分別是: Multicast註冊中心 Zookeeper註冊中心 Redis註冊中心 Simple註冊中心 這裡將對註冊中心的一個實現Zookeeper跟大家分享,因為Zookeeper是應用比較多 ...
  • 在此先容我拿“小弟”這個詞來扯一下淡。什麼是小弟呢,所謂小弟就是可以幫你做一些瑣碎的事情,在此我們就拿“小弟”來類比“外觀模式”。在上面一篇博文我們完整的介紹了“適配器模式”,接下來我們將要在這篇博客中介紹“外觀模式”(Facade Pattern)。其實外觀模式與之前我們介紹過的“命令模式”有些相 ...
  • Appreciation to our TA, +7, who designed this task. Client.cpp include include include "Factory.hpp" include "Product.hpp" int main() { UIFactory ui = ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...