小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

設(shè)計(jì)模式入門

 Coder編程 2020-06-28

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

1、什么是設(shè)計(jì)模式

  設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。

2、目的

  設(shè)計(jì)模式的目的是為了讓軟件具有更好的代碼重用性、可讀性、可擴(kuò)展性、可靠性,同時(shí)使程序間出現(xiàn)高內(nèi)聚、低耦合的特性。

3、七大原則

(1)單一職責(zé)原則(Single-Responsibilitiy Principle(SRP))。
  簡(jiǎn)單的說(shuō)就是 對(duì)于一個(gè)類A,其只負(fù)責(zé)某項(xiàng)職責(zé)(功能),并不是指一個(gè)類只有一個(gè)方法。
  比如某個(gè)人,其兼職了幾個(gè)不同的工作,按照單一職責(zé)原則,每個(gè)工作應(yīng)該都由一個(gè)專門的人來(lái)完成。

(2)接口隔離原則(Interface Segregation Principle(ISR))。
  簡(jiǎn)單的說(shuō)就是 對(duì)于一個(gè)類A,不應(yīng)該依賴于不需要的接口,即類間的依賴關(guān)系需建立在最小的接口上。
  比如,一個(gè)接口里面有10個(gè)抽象方法,當(dāng)類A需要使用某個(gè)方法時(shí),需要實(shí)現(xiàn)該接口,并重寫10個(gè)方法。此時(shí)其余的9個(gè)方法,類A并不需要,按照接口隔離原則,可以將這個(gè)方法單獨(dú)的抽出來(lái)寫成一個(gè)接口B,然后讓類A去實(shí)現(xiàn)接口B,此時(shí)類A只需重寫一個(gè)方法即可。

(3)依賴倒置(倒轉(zhuǎn))原則(Dependence Inversion Principle(DIP))。
  簡(jiǎn)單的講 依賴倒置原則的中心思想是面向接口編程,高層模塊不依賴與低層模塊,且二者均依賴于抽象,其抽象不依賴于細(xì)節(jié),應(yīng)該細(xì)節(jié)依賴于抽象。
  其中:
    抽象指的是 接口 或者 抽象類, 細(xì)節(jié)指的是 具體的實(shí)現(xiàn)類。

【舉例:普通的寫法】
class Teacher{
}

class Hospital{
    // 高層依賴于低層
    public void check(Teacher teacher){ // 采用具體的實(shí)現(xiàn)類,只能傳入Teacher類的實(shí)例
    }
}

【舉例:面向接口編程】
interface Person{
}

class Teacher implements Person{
}

class Doctor implements Person{
}

class Hospital{
    // 高層不依賴于低層,而依賴于抽象
    public void check(Person person){ // 采用接口,方便復(fù)用,可以傳入Teacher類或Doctor類的實(shí)例
    }
}

(4)里氏替換原則(Liskov Substitution Principle(LSP))。
  簡(jiǎn)單的講就是 任何父類能出現(xiàn)的地方,子類一定能出現(xiàn),且子類可以擴(kuò)展父類的功能,但是不能改變父類原有的功能。即繼承時(shí)盡量不要重寫父類的方法。
  比如一個(gè)父類A,子類B,且子類B重寫了父類A的某個(gè)方法,在一個(gè)類C中需要使用父類A的方法時(shí),若此時(shí)傳入的是子類B,則程序可能會(huì)出錯(cuò)。

(5)開閉原則(Open-Close Principle(OCP),核心原則)。
  簡(jiǎn)單的講就是 軟件對(duì)擴(kuò)展開放(代碼提供方),對(duì)修改關(guān)閉(代碼使用方),即對(duì)代碼功能進(jìn)行擴(kuò)展時(shí),不能修改原有代碼。使用抽象類與接口對(duì)代碼進(jìn)行重構(gòu),當(dāng)擴(kuò)展代碼功能時(shí),實(shí)現(xiàn)抽象類或接口并實(shí)現(xiàn)相關(guān)方法即可。

(6)迪米特法則(Law of Demeter(LOD))。
  又稱為最小知道法則(Least Knowledge Principle (LKP))
  簡(jiǎn)單的說(shuō)就是 一個(gè)實(shí)體應(yīng)盡量少的與其他實(shí)體之間發(fā)生相互作用(降低耦合),使系統(tǒng)功能模塊相互獨(dú)立。一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象有最少的了解,即不管你內(nèi)部有多復(fù)雜,我能調(diào)用你的方法就行。
  比如:一個(gè)類A的某個(gè)方法中出現(xiàn)某個(gè)類B,且對(duì)類B做了一些無(wú)關(guān)類A的操作,按照迪米特法則,需要將這些操作封裝在類B的一個(gè)方法中,然后在類A中調(diào)用該方法。

(7)合成復(fù)用原則。
  簡(jiǎn)單的說(shuō)就是 盡量使用合成或者聚合的方式,少用繼承。

4、常用設(shè)計(jì)模式分類(23種)

(1)三大類:

  創(chuàng)建型模式(五種),

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

  行為型模式(十一種)
(2)創(chuàng)建型模式:(強(qiáng)調(diào)對(duì)象創(chuàng)建時(shí),如何去更好的設(shè)計(jì))
  工廠模式,抽象工廠模式,單例模式,建造者模式,原型模式。

(3)結(jié)構(gòu)型模式:(設(shè)計(jì)更好的軟件結(jié)構(gòu))
  適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。

(4)行為型模式:(設(shè)計(jì)更好的方法調(diào)用模式)
  策略模式,模板方法模式,觀察者模式,迭代器模式,責(zé)任鏈(職責(zé)鏈)模式,命令模式,備忘錄模式,狀態(tài)模式,訪問(wèn)者模式,中介者模式,解釋器模式。

 

二、UML圖

1、什么是UML圖

(1) Unified Modeling Language,統(tǒng)一建模語(yǔ)言,用來(lái)對(duì)軟件密集系統(tǒng)進(jìn)行可視化建模的一種語(yǔ)言。簡(jiǎn)單的說(shuō)就是 幫助軟件開發(fā)人員記錄、交流的一個(gè)圖形化語(yǔ)言。
(2)UML圖本身是一組符號(hào)的規(guī)定,用于描述軟件模型間各元素以及各元素間的聯(lián)系。

2、UML分類

(1)用例圖
(2)靜態(tài)結(jié)構(gòu)圖:類圖,對(duì)象圖,包圖,組件圖,部署圖。
(3)動(dòng)態(tài)行為圖:交互圖(時(shí)序圖、協(xié)作圖)、狀態(tài)圖、活動(dòng)圖。

3、類圖(常用)

(1)用于描述類與類之間的關(guān)系。UML的核心。
(2)元素:類、接口。
(3)關(guān)系:依賴、繼承(泛化)、實(shí)現(xiàn)、關(guān)聯(lián)、聚合、組合等。
(4)依賴:
  若在某個(gè)類A中使用到類B,且若沒(méi)有類B,類A編譯會(huì)報(bào)錯(cuò),則稱A與B之間有依賴關(guān)系。
  線條表示:虛線普通箭頭("<",">")。
(5)繼承(泛化):
  屬于依賴關(guān)系的一種特例,如果類A繼承了類B,則稱A與B間存在泛化關(guān)系。
  線條表示:實(shí)線空心三角箭頭。
(6)實(shí)現(xiàn):
  屬于依賴關(guān)系的一種特例,如果類A實(shí)現(xiàn)了類B,則稱A與B間存在實(shí)現(xiàn)關(guān)系。
  線條表示:虛線空心三角箭頭。
(7)關(guān)聯(lián):
  屬于依賴關(guān)系的一種特例,如果類A與類B間有聯(lián)系。比如類B作為類A的成員變量,則稱A與B間存在關(guān)聯(lián)關(guān)系。
  線條表示:實(shí)線(直線),普通箭頭("<",">")可選。如果強(qiáng)調(diào)方向,則加一個(gè)普通箭頭。否則只需要一條實(shí)線。
(8)聚合:
  屬于關(guān)聯(lián)關(guān)系的一種特例,如果類A與類B間可以分離且可以獨(dú)立存在,則稱A與B間存在聚合關(guān)系。比如:人與衣服,可以分離,則為聚合關(guān)系。
  線條表示:實(shí)線空心菱形箭頭。
(9)組合:
  屬于關(guān)聯(lián)關(guān)系的一種特例,如果類A與類B間不可以分離,則稱A與B間存在組合關(guān)系。比如:人與人頭,不可分離,則為組合關(guān)系。
  線條表示:實(shí)線實(shí)心菱形箭頭。

注:
  eclipse下生成Java類圖和時(shí)序圖,生成UML圖,參考地址: https://blog.csdn.net/qq_21383435/article/details/79890884

  在線編輯UML圖的工具(ProcessOn):https://www./
 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多