亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

設計模式學習筆記-基礎知識篇

2019-11-14 15:29:27
字體:
來源:轉載
供稿:網友

1. 設計模式的重要性

  1.1 設計模式解決的是在軟件過程中如何來實現具體的軟件功能。實現同一個功能的方法有很多,哪個設計容易擴展,容易復用,松耦合,可維護?設計模式指導我們找到最優方案。

  1.2 設計中往往會存在設計缺陷,這些缺陷包括:

    僵化性:難以對軟件進行改動,即使在功能上來看是很小的改動

    脆弱性:在進行很小的改動時,可能導致很多地方出現問題

    頑固性:要把系統中某些通用的功能分離出來的努力和風險非常巨大

    粘滯性:當面臨改動時,改動的方案有很多,一些會保持設計,一些會破壞設計,當采用保持設計的方法比用破壞設計的方法更難應付變化時,說明原設計具有較高的粘滯性

    晦澀性:模塊難以理解

    不必要的重復:代碼不能復用,往往通過Copy-Paste來實現相似功能

    不必要的復雜性:設計中包含了沒有用的成分,往往是過度設計導致的

  1.3 如果你覺得在開發過程中發現以上問題(缺陷),那么就需要使用設計模式來改善最初設計,即重構原有的設計。如果你是最初的設計者,那么也需要應用設計模式來找到一個最優方案。設計模式不是編程語言,它修煉的是程序員的內功。因此,對于一個開發者來說,學習設計模式是非常必要的。

2. 對于初學者來說,必要的知識準備還是必須的,沒有這些基礎就很難將這些理解透徹。

  2.1 面向對象基本知識

  設計模式是面向對象編程的設計指導,因此學習設計模式前先要理解什么是面向對象,這里只簡單列出了面向對象的主要概念,要是初學者的話還得查閱相關資料;對已經了解的老手來說,權當復習和梳理一下吧。

    2.1.1 面向對象三大特征:封裝、繼承、多態

    2.1.2 類與實例

    2.1.3 構造(析構)方法

    2.1.4 重載

    2.1.5 訪問修飾符

    2.1.6 屬性/字段/方法

    2.1.7 抽象類

    2.1.8 接口

  2.2 UML類圖

  在學習設計模式時,通常接觸到的只有類圖,因此讀懂UML類圖對理解模式來說有很大幫助。下面來介紹UML類圖中的關系    

  

    2.2.1 依賴關系(Dependency),用虛線加箭頭表示。如上圖動物(Animal)依賴空氣(Air)。表示依賴關系的代碼有以下幾種

      1)作為參數

復制代碼
        public class Air        {            public void GetOxygen()            {                Console.WriteLine("Get oxygen from air.");            }        }        public abstract class Animal        {            /// <summary>            /// 動物依賴空氣才能呼吸,作為參數傳入            /// </summary>            /// <param name="air"></param>            public void Breathe(Air air)            {                air.GetOxygen();            }        }
復制代碼

      2)在方法內部定義    

復制代碼
            /// <summary>            /// 動物依賴空氣才能呼吸,在方法內部實例化新對象            /// </summary>            public void Breathe()            {                Air air = new Air();                air.GetOxygen();            }
復制代碼

      3)靜態方法調用

復制代碼
            /// <summary>            /// 在方法中調用靜態方法            /// </summary>            public void Test()            {                ClassName.UseStaticMethode();            }
復制代碼

    2.2.2 繼承關系(Inherit),用實線加空心箭頭表示,如上圖鷹(Eagle)繼承自動物(Animal)    

復制代碼
        /// <summary>        /// 鷹繼承自Animal        /// </summary>        public class Eagle : Animal        {        }
復制代碼

    2.2.3 實現關系(Realize),用虛線加空心箭頭表示,如上圖鷹(Eagle)實現了飛行能力(IFlyAble)    

復制代碼
        /// <summary>        /// 鷹繼承自Animal        /// </summary>        public class Eagle : Animal, IFlyAble        {        //實現IFlyAble接口中定義的方法            public void Fly()            {                Console.WriteLine("老鷹可以飛翔。");            }        }
復制代碼

    2.2.4 組合關系,講組合關系之前不得不談關聯關系與聚合關系

      1)關聯關系(Association):對于兩個相對獨立的對象,當一個對象實例與另一個對象的一些特定實例存在固定的對應關系時,這兩個對象之間的關系為關聯關系。例如:公司與員工的關系      

      

      代碼表現,通過實例字段或屬性來實現

復制代碼
        public class Emplolyee        {        public string Name{ get; set; }        }        public class Company        {            /// <summary>            /// 一個公司可以有多個員工            /// </summary>            PRivate Emplolyee[] employees;        }
復制代碼

      2) 聚合關系(Aggregate): 是關聯關系的一種,是一種較強的關聯關系,強調整體與部分之間的關系。例如:電腦與顯示器的關系,就是整體與部分的關系,即聚合關系      

      

      代碼表現,也是通過實例字段或屬性來實現      

復制代碼
        public class Displayer        {            /// <summary>            /// 顯示器型號            /// </summary>            public string Model { get; set; }        }        public class Computer        {            /// <summary>            /// 通過字段表示聚合關系            /// </summary>            private Displayer displayer;        }
復制代碼

      3)組合關系,組合關系是聚合的一種特殊形式,表示一個所有物實例不能同時被兩個所有物所擁有。如上例:鷹擁有一對翅膀,它的翅膀不能同時屬于別的鷹。

      代碼表現,也是通過實例字段或屬性來實現      

復制代碼
        public class Wing        {        }        /// <summary>        /// 鷹繼承自Animal        /// </summary>        public class Eagle : Animal, IFlyAble        {            private Wing leftWing;            private Wing rightWing;            public Eagle()            {                // 在構造函數中實例化翅膀,防止翅膀被改變                leftWing = new Wing();                rightWing = new Wing();            }            public void Fly()            {                Console.WriteLine("老鷹可以飛翔。");            }        }
復制代碼

      關聯關系與聚合關系的區別: 關聯關系所涉及的兩個對象是處在同一個層次上的,比如程序員和計算機的關系就是一種關聯關系,而不是聚合關系,因為程序員不是由計算機組成的。聚合關系涉 及的兩個對象處于不平等的層次上,一個代表整體,一個代表部分。如計算機與顯示器的關系就是聚集關系,因為顯示器是計算機的一部分。

      聚合關系與組合關系的區別:聚合關系中處于被持有的對象,可以被別的對象所持有。如多態計算機可以共享同一個顯示器。組合關系中被持有的對象只能被一個對象引用,不能共享給其它對象;而且被持有的對象的生命周期也由所有者控制,當所有者析構了,其所有物必須隨著它一起析構。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美香蕉大胸在线视频观看| 国产精品久久久久77777| 国产91在线播放精品91| 中文字幕精品—区二区| 91精品久久久久久久久| 欧美激情一级精品国产| 中文字幕一区二区三区电影| 亚洲一区二区中文字幕| 日韩精品极品视频| 亚洲一区免费网站| 久久精品视频99| 国产精品夫妻激情| 色综合视频一区中文字幕| 国产精品丝袜视频| 欧美性猛交xxxx偷拍洗澡| 欧美成在线视频| 在线播放日韩av| 欧美日韩一区二区三区在线免费观看| 亚洲欧洲国产一区| 九九热在线精品视频| 欧美日韩电影在线观看| 欧美精品福利在线| 亚洲男女性事视频| 国产日本欧美视频| 国产精品视频白浆免费视频| 日韩美女中文字幕| 狠狠色狠色综合曰曰| 亚洲欧美激情另类校园| 欧美在线视频网| 久久久999精品免费| 国产精品女主播视频| 久久精品久久久久久国产 免费| 久久久久久亚洲精品中文字幕| 欧美在线中文字幕| 日韩在线免费av| 日韩三级成人av网| 久久精品视频网站| 成人免费在线视频网址| 亚洲精品美女在线观看播放| 日韩欧美在线视频日韩欧美在线视频| 久久久亚洲精选| 裸体女人亚洲精品一区| 欧美噜噜久久久xxx| 亚洲美女在线看| 国产精品欧美一区二区| 在线观看国产精品淫| 欧美激情按摩在线| 92国产精品久久久久首页| 国产精品视频永久免费播放| 欧美日韩国产丝袜另类| 日韩av在线免费| 日韩中文有码在线视频| 91沈先生在线观看| www.国产精品一二区| 色综合天天综合网国产成人网| 久久激情视频久久| 九九热99久久久国产盗摄| 国产精品美女主播在线观看纯欲| 欧美怡春院一区二区三区| 国产精品香蕉国产| 欧美成年人视频网站欧美| 亚洲人成77777在线观看网| 色综合伊人色综合网| 视频在线观看99| 欧美日韩国产黄| 精品一区电影国产| 亚洲精品福利视频| 欧美美最猛性xxxxxx| 欧美日产国产成人免费图片| 国模私拍一区二区三区| 久久国产加勒比精品无码| 欧美一区在线直播| 日本高清视频精品| 一区二区三区无码高清视频| 国产精品久久久久一区二区| 成人做爽爽免费视频| 久久久久久久国产精品视频| 欧美最顶级丰满的aⅴ艳星| 97精品视频在线播放| 91视频免费在线| 久久精品国产96久久久香蕉| 岛国av一区二区在线在线观看| 岛国视频午夜一区免费在线观看| 日韩中文字幕第一页| 国产在线精品播放| 国产精品一区二区久久久久| 国产日产欧美a一级在线| 精品欧美一区二区三区| 中文字幕日韩av| 欧美不卡视频一区发布| 91精品国产高清久久久久久| 91精品国产91久久久久久| 亚洲欧美一区二区三区四区| 亚洲黄色av女优在线观看| 欧美伊久线香蕉线新在线| 夜夜躁日日躁狠狠久久88av| 亚洲男人天天操| 日韩精品在线免费播放| 亚洲视频在线观看网站| 一区二区三区天堂av| 亚洲欧美中文字幕在线一区| 欧美中在线观看| 亚洲人成网站777色婷婷| 日韩精品在线观看网站| 国产精品狠色婷| 北条麻妃在线一区二区| 亚洲精品videossex少妇| 国产精品久久久久91| 亚洲精品动漫久久久久| 亚洲电影免费观看高清完整版在线观看| 亚洲已满18点击进入在线看片| 日韩精品黄色网| 亚洲男人av在线| 欧美在线免费观看| 日本在线观看天堂男亚洲| 日日狠狠久久偷偷四色综合免费| 色婷婷成人综合| 日韩中文字幕视频在线观看| 九九九久久久久久| 国产精品网红福利| 欧美成人sm免费视频| 精品视频在线播放色网色视频| 91在线观看免费高清完整版在线观看| 久久免费国产精品1| 成人观看高清在线观看免费| 日韩在线播放视频| 国产精品露脸av在线| 国产成人精品国内自产拍免费看| 欧美国产日韩xxxxx| 亚洲天堂av图片| 亚洲天堂色网站| 久久精品国产成人精品| 欧美黑人国产人伦爽爽爽| 欧美激情欧美狂野欧美精品| 午夜精品一区二区三区在线视| www.日韩欧美| 欧美成年人视频网站欧美| 成人网址在线观看| 97香蕉超级碰碰久久免费软件| 欧美午夜视频一区二区| 美女精品久久久| 亚洲色图15p| 在线视频国产日韩| 国产a∨精品一区二区三区不卡| 亚洲国产精品久久久久| 日本欧美在线视频| 精品国产福利在线| 欧美精品videos| 久久精品视频中文字幕| 欧美视频在线看| 疯狂欧美牲乱大交777| 日本成人黄色片| 欧美成人激情在线| 亚州av一区二区| 1769国产精品| 精品久久香蕉国产线看观看gif| 欧美激情视频网| 久久久999成人| 91精品啪aⅴ在线观看国产| 欧美色videos| 一区二区三区日韩在线| 久久久中精品2020中文| 欧美视频在线观看免费| 26uuu另类亚洲欧美日本老年|