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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式1——设计模式的原则

發布時間:2024/7/19 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式1——设计模式的原则 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.從面向對象說起

~~~~~~??????變化是代碼復用的天敵,面向對象的設計語言的優勢就是抵御變化!這里的所謂抵御變化,不是說采用面向對象的設計語言,就沒有變化,而是將變化的范圍降到最小。
~~~~~~??????之前我們所認識的面向對象的語言,具有封裝、繼承和多態三大特性,但這是面向對象的底層思維;
~~~~~~??????從抽象思維認識面向對象,它首先要能隔離變化:從宏觀的角度來看,面向對象的語言更能適應軟件帶來的變化,將這種變化的影響降到最低,
~~~~~~??????其次面向對象要求各個類之間各司其職:從微觀的角度來看,面向對象更強調各個類各個承擔的責任,各個類之間各司其職,變換導致的新增類型不應該影響原有的類,一般使用C++多態機制實現這種“各司其職”,接口一致,但是實現不一。

2.對象究竟是什么?

~~~~~~??????從語言的角度來看,對象封裝了代碼和數據;
~~~~~~??????從規格的角度來看,對象是一系列的可被使用的公共接口;
~~~~~~??????從概念的角度來看,對象是某種擁有責任的抽象

3.面向對象的設計原則(8個)

~~~~~~?????? 1.依賴倒置原則
~~~~~~~~~~??????????高層模塊不應該依賴于低層模塊,二者都應該依賴于抽象;
~~~~~~~~~~??????????抽象不應該依賴于實現細節,而實現細節應該依賴于抽象;

這里的高層模塊可以理解為父類,低層模塊可以理解為子類,抽象可以理解為抽象類, 實現細節可以理解為具體的虛函數功能實現。這句話就是說父類不應該依賴子類,它們都要依賴抽象類, 抽象類中不要有具體的函數實現,而具體的虛函數實現要依賴于抽象類所謂的依賴倒置是指在編寫代碼時,一般的編寫規則是抽象在最上,然后父類,最下面是子類。 但是設計模式的依賴關系是倒置的,下面的代碼需要依賴上面的,這就是依賴倒置原則。

~~~~~~?????? 2.開放封閉原則
~~~~~~~~~~??????????對拓展開放,對修改封閉;
~~~~~~~~~~??????????類的模塊應該是可拓展的,但是不可修改;

當需求變化時,首先想到的不應該是修改源代碼,修改的成本太高,并且大型代碼不能輕易修改, 而是在原來代碼不變的基礎上,增加一些代碼,以實現某些需求。 當然可拓展性需要提前在做好規劃,比如在抽象類中提前留好拓展接口

~~~~~~?????? 3.單一職責原則
~~~~~~~~~~??????????相同的責任不要分散到不同的類中;
~~~~~~~~~~??????????避免一個類承擔不同的責任

單一職責的好處是:減少耦合性,提高復用性

~~~~~~?????? 4.替換原則
~~~~~~~~~~??????????子類能夠替換它的父類

為什么要強調子類能夠替換父類呢?如果子類能夠替換父類,說明父子類之間的強關系, 至少父類的實現在子類中都有

~~~~~~?????? 5.接口隔離原則
~~~~~~~~~~??????????不要給客戶程序提供它們用不到的方法,接口應該盡量小而完備。

客戶程序用不到的類中方法,就不要public出去, 如果只是自己類中使用,就private;如果只是子類中使用,就protected; 真正有必要的情況下,即客戶程序真的需要這個方法,才去public

~~~~~~?????? 6.優先使用對象組合而不是類繼承

繼承某種程度上會破壞封裝性,父類子類間的耦合性高,而對象組合不會出現這種問題。

~~~~~~?????? 7.封裝變化點

封裝的最高境界是封裝變化點,一端變化,一端不變化

~~~~~~?????? 8.針對接口編程,不針對實現編程

總結

以上是生活随笔為你收集整理的设计模式1——设计模式的原则的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。