中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[C#]23種設計模式

發布時間:2020-07-29 05:24:50 來源:網絡 閱讀:238 作者:蓬萊仙羽 欄目:開發技術
創建型模式
工廠方法(Factory Method)
在工廠方法模式中,工廠方法用來創建客戶所需要的產品,同時還向客戶隱藏了哪種具體產品類將被實例化這一細節。工廠方法模式的核心是一個抽象工廠類,各種具體工廠類通過抽象工廠類將工廠方法繼承下來。如此使得客戶可以只關心抽象產品和抽象工廠,完全不用理會返回的是哪一種具體產品,也不用關系它是如何被具體工廠創建的。

抽象工廠模式(Abstract Factory)
抽象工廠模式的主要優點是隔離了具體類的生成,使得客戶不需要知道什么被創建了。猶豫這種隔離,更換一個具體工廠就變得相對容易。所有的具體工廠都實現了抽象工廠中定義的那些公共接口,因此只需改變具體工廠的實例,就可以在某種程度上改變這個軟件的系統的行為。另外,應用抽象工廠模式符合GRASP純虛構的模式,可以實現高內聚低耦合的設計目的,因此抽象工廠模式得到了廣泛應用。

建造者模式(Builder Pattern)
建造者模式將一個復雜對象的生成責任作了很好的分配。它把構造過程放在指揮者的方法中,把裝配過程放到具體建造者類中。建造者模式的產品之間都有共通點,但有時候,產品之間的差異性很大,這就需要借助工廠方法模式或抽象工廠模式。另外,如果產品的內部變化復雜,Builder的每一個子類都需要對應到不同的產品去做構建的動作、方法,這就需要定義很多個具體建造類來實現這種變化。

單件模式(Single Pattern)
Singleton單例模式為一個面向對象的應用程序提供了對象唯一的訪問點,不管它實現何種功能,此種模式都為設計及開發團隊提供了共享的概念。然而,Singleton對象類派生子類就有很大的困難,只有在父類沒有被實例化時才可以實現。值得注意的是,有些對象不可以做成Singleton,比如.net的數據庫鏈接對象(Connection),整個應用程序同享一個Connection對象會出現連接池溢出錯誤。另外,.net提供了自動廢物回收的技術,因此,如果實例化的對象長時間不被利用,系統會認為它是廢物,自動消滅它并回收它的資源,下次利用時又會重新實例化,這種情況下應注意其狀態的丟失。

原型模式(Protype Pattern)
原型模式得到了廣泛的應用,特別是在創建對象成本較大的情況下(初始化需占用較長時間,占用太多CPU資源或網絡資源。比如通過Webservice或DCOM創建對象,或者創建對象要裝載大文件),系統如果需要重復利用,新的對象可以通過原型模式對已有對象的屬性進行復制并稍作修改來取得。另外,如果系統要保存對象的狀態而對象的狀態變化很小,或者對象本身占內存不大的時候,也可以用原型模式配合備忘錄模式來應用。相反地,如果對象的狀態變化很大,或者對象占用內存很大,那么采用狀態模式會比原型模式更好。原型模式的缺點是在實現深層復制時需要編寫復雜的代碼。

結構型模式
適配器模式(Adapter Pattern)
適配器模式可以將一個類的接口和另一個類的接口匹配起來,使用的前提是你不能或不想修改原來的適配器母接口(adaptee)。例如,你向第三方購買了一些類、控件,但是沒有源程序,這時,使用適配器模式,你可以統一對象訪問接口。但客戶調用可能需要變動。

橋接模式(Bridge Pattern)
橋接模式可以從接口中分離實現功能,使得設計更具擴展性,這樣,客戶調用方法時根本不需要知道實現的細節。
橋接模式減少了子類,假設程序要在2個操作系統中處理6種圖像格式,純粹的繼承就需要(2*6)12個子類,而應用橋接模式,只需要(2+6)8個子類。它使得代碼更清潔,生成的執行程序文件更小。  
橋接模式的缺陷是抽象類與實現類的雙向連接使得運行速度減慢。

組合模式(Composite Pattern)
組合模式可以清楚地定義分層次的復雜對象,表示對象的全部或部分層次,使得增加新部件也更容易,因為它讓客戶忽略了層次的不同性,而它的結構又是動態的,提供了對象管理的靈活接口。組合模式對于樹結構的控制有著神奇的功效,例如在人力資源系統的組織架構及ERP系統的BOM設計中,組合模式得到重點應用。
組合模式的缺陷是使得設計變得更加抽象。對象的商業規則如果很復雜,則實現組合模式具有很大挑戰性,并且,不是所有的方法都與葉部件子類有關聯。

裝飾模式(Decorator Pattern)
裝飾模式提供了比靜態繼承更好的柔韌性,它允許開發一系列的功能類用來代替增加對象的行為,這既不會污染原來對象的源碼,還能使代碼更容易編寫,使類更具擴展性,因為變化都是由新的裝飾類來完成。還可以建立連接的裝飾對象關系鏈。
需要注意的是,裝飾鏈不宜過長。裝飾鏈太長會使系統花費較長時間用于初始化對象,同時信息在鏈中的傳遞也會浪費太多的時間。這個情況好比物品包裝,包了一層又一層,大包套小包。另外,如果原來的對象接口發生變化,它所以的裝飾類都要修改以匹配它的變化。派生子類會影響對象的內部,而一個Decorator只會影響對象的外表。

外觀模式(Fa
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太白县| 林芝县| 和林格尔县| 新源县| 界首市| 甘南县| 海晏县| 临海市| 皋兰县| 唐河县| 长子县| 翁源县| 汽车| 沈阳市| 蒲江县| 高阳县| 湛江市| 乃东县| 和政县| 赞皇县| 苏州市| 涟水县| 青冈县| 乐平市| 吉安县| 荣成市| 盖州市| 华亭县| 瑞丽市| 芦溪县| 彩票| 紫金县| 龙井市| 乌海市| 渝中区| 芜湖市| 莎车县| 徐州市| 威宁| 吴江市| 彭泽县|