摘要:當(dāng)然,除了讓我們顯得更加專(zhuān)業(yè)之外,在自己所學(xué)習(xí)或者工作的項(xiàng)目中,適當(dāng)合理的使用設(shè)計(jì)模式,能夠給項(xiàng)目帶來(lái)很大的好處。
簡(jiǎn)單說(shuō)兩句
本文首發(fā)公眾號(hào)【一名打字員】
對(duì)不住各位老鐵了,年前說(shuō)好要更幾波JAVA的東西,又偷懶了,沒(méi)辦法,在這里用小錘錘偷偷錘了自己幾下。由于工作原因,更新時(shí)間不定,各位老鐵有問(wèn)題可以私聊我哈。
對(duì)于初學(xué)者或者是正在向中高級(jí)的Java程序猿(打字員)來(lái)說(shuō),時(shí)刻梳理自己所掌握的知識(shí)是十分重要的,近期本打字員會(huì)整理一下關(guān)于J2EE下面的幾種常用的設(shè)計(jì)模式,并逐個(gè)解析,希望大家能夠一起鞏固一下相關(guān)掌握的知識(shí)點(diǎn)。
為什么要用設(shè)計(jì)模式相信很多人都有這個(gè)疑問(wèn),有的人說(shuō)在50萬(wàn)行以下的項(xiàng)目中,設(shè)計(jì)模式基本是沒(méi)有用的。當(dāng)然,除了讓我們code顯得更加專(zhuān)業(yè)之外,在自己所學(xué)習(xí)或者工作的項(xiàng)目中,適當(dāng)合理的使用設(shè)計(jì)模式,能夠給項(xiàng)目帶來(lái)很大的好處。首先,使用了合理的模式,團(tuán)隊(duì)里進(jìn)行溝通協(xié)作會(huì)很方便,交流成本有時(shí)候特別高,特別是在程序員之間。其次恰當(dāng)?shù)氖褂迷O(shè)計(jì)模式可以用以解決特定場(chǎng)景的問(wèn)題的一系列方法,幫助我們改善系統(tǒng)的設(shè)計(jì),增強(qiáng)系統(tǒng)的健壯性、可擴(kuò)展性,為以后鋪平道路。
最后用網(wǎng)絡(luò)上的一句概括來(lái)說(shuō),設(shè)計(jì)模式(Designpattern)就是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類(lèi)編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。
模式概覽在實(shí)際的學(xué)習(xí)或者工作中,大家或多或少的會(huì)接觸或者使用一些Java的設(shè)計(jì)模式,在Java中存在23種設(shè)計(jì)模式,其圖如下:
其中主要分為三大類(lèi):
創(chuàng)建型模式
結(jié)構(gòu)型模式
行為型模式
在文末會(huì)貼出所有的設(shè)計(jì)模式,其中本打字員映象里自己常用的模式一般有:
工廠(chǎng)模式、工廠(chǎng)方法模式、抽象工廠(chǎng)模式、單例模式等,這些都屬于創(chuàng)建型模式。
觀(guān)察者模式,模版模式,策略模式等,這些都屬于行為型模式。
包裝模式,適配器模式,組合模式,代理模式等,這些屬于結(jié)構(gòu)型模式。
六大原則在學(xué)習(xí)使用設(shè)計(jì)模式的時(shí)候,我們需要了解這六大原則:
單一原則
意思就是,我們?cè)诰帉?xiě)bug,不對(duì),編寫(xiě)代碼的時(shí)候在一個(gè)功能類(lèi)中盡量負(fù)責(zé)單一的功能,這個(gè)功能應(yīng)當(dāng)盡量的烤爐周全,保持極致。
里氏替換原則
這個(gè)原則可能大家乍一眼不怎么能夠理解,與C#中里氏替換原則一致,這個(gè)意思就是一個(gè)子類(lèi)能夠替換父類(lèi)并且能夠正常的工作。有機(jī)智的童鞋要舉手提問(wèn)了,那Java中的多態(tài)會(huì)不會(huì)違背這種原則呢,其實(shí)不然。所謂的里氏替換原則就是讓你的某一段程序耦合于基類(lèi)或者接口,而不是具體繼承了基類(lèi)的子類(lèi)或?qū)崿F(xiàn)接口的具體類(lèi)型。僅替換子類(lèi)不會(huì)讓你這個(gè)程序的屬性有所改變。所謂多態(tài)機(jī)制,則是給了你達(dá)成上述原則的其中一種能力。
接口隔離原則
這個(gè)應(yīng)該比較好理解,見(jiàn)字如意。這個(gè)接口也叫做接口最小化原則,強(qiáng)調(diào)的是一個(gè)接口擁有的行為應(yīng)該盡可能的小。
依賴(lài)倒置原則
這個(gè)強(qiáng)調(diào)了高層模塊不該依賴(lài)于低層模塊,二者都應(yīng)該依賴(lài)于抽象,抽象不應(yīng)該依賴(lài)于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴(lài)于抽象。
迪米特原則
也稱(chēng)最小知道原則,即一個(gè)類(lèi)應(yīng)該盡量不要知道其他類(lèi)太多的東西,不要和陌生的類(lèi)有太多接觸。
開(kāi)閉原則
其實(shí)本打字員也對(duì)這個(gè)原則有點(diǎn)模糊,但是大體的意思就是一句話(huà)對(duì)修改關(guān)閉,對(duì)擴(kuò)展開(kāi)放。在網(wǎng)上瀏覽相關(guān)文章的時(shí)候提到過(guò)一句在大話(huà)設(shè)計(jì)模式中出現(xiàn)的總結(jié),“用抽象構(gòu)建框架,用細(xì)節(jié)實(shí)現(xiàn)擴(kuò)展”。我想這句話(huà)也許是對(duì)整體的原則做出的最好的解釋了吧。
寫(xiě)在最后說(shuō)實(shí)話(huà),本打字員也不知道自己何時(shí)放棄,會(huì)停止編程,會(huì)不再擼代碼,因?yàn)檫@份工作對(duì)精神上的消耗確實(shí)很大。但是既然我們依然堅(jiān)持在這個(gè)崗位上,我們就應(yīng)該本著一名程序員的心態(tài),去學(xué)習(xí)新的技術(shù)與知識(shí),維護(hù)和鞏固現(xiàn)有的知識(shí)點(diǎn),為成為自己想象中的自己而努力吧。
附:
模式 | 名稱(chēng) | 所屬分類(lèi) |
---|---|---|
Abstract Factory | 抽象工廠(chǎng)模式 | 創(chuàng)建型 |
Builder | 建造模式 | 創(chuàng)建型 |
Factory Method | 工廠(chǎng)方法模式 | 創(chuàng)建型 |
Prototype | 原始模型模式 | 創(chuàng)建型 |
Singleton | 單例模式 | 創(chuàng)建型 |
Adapter | 適配器(變壓器)模式 | 結(jié)構(gòu)型 |
Bridge | 橋梁模式 | 結(jié)構(gòu)型 |
Composite | 合成模式 | 結(jié)構(gòu)型 |
Decorator | 裝飾模式 | 結(jié)構(gòu)型 |
Facade | 門(mén)面模式 | 結(jié)構(gòu)型 |
Flyweight | 享元模式 | 結(jié)構(gòu)型 |
Proxy | 代理模式 | 結(jié)構(gòu)型 |
Chain Of Responsibility | 責(zé)任鏈模式 | 行為型 |
Command | 命令模式 | 行為型 |
Interpreter | 解釋器模式 | 行為型 |
Iterator | 迭代子模式 | 行為型 |
Mediator | 調(diào)停者模式 | 行為型 |
Memento | 備忘錄模式 | 行為型 |
Observer | 觀(guān)察者模式 | 行為型 |
State | 狀態(tài)模式 | 行為型 |
Strategy | 策略模式 | 行為型 |
Template Method | 模板方法模式 | 行為型 |
Visitor | 訪(fǎng)問(wèn)者模式 | 行為型 |
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/68727.html
摘要:前言這里筑夢(mèng)師是一名正在努力學(xué)習(xí)的開(kāi)發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡(jiǎn)書(shū)記錄下自己的學(xué)習(xí)歷程個(gè)人學(xué)習(xí)方法分享本文目錄更新說(shuō)明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開(kāi)發(fā)學(xué)習(xí)路線(xiàn)很長(zhǎng)知識(shí)拓展很長(zhǎng)在這里收取很多人的建議以后決 前言 這里筑夢(mèng)師,是一名正在努力學(xué)習(xí)的iOS開(kāi)發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡(jiǎn)書(shū)記錄下自己的學(xué)習(xí)歷程...
摘要:前言這里筑夢(mèng)師是一名正在努力學(xué)習(xí)的開(kāi)發(fā)工程師目前致力于全棧方向的學(xué)習(xí)希望可以和大家一起交流技術(shù)共同進(jìn)步用簡(jiǎn)書(shū)記錄下自己的學(xué)習(xí)歷程個(gè)人學(xué)習(xí)方法分享本文目錄更新說(shuō)明目錄學(xué)習(xí)方法學(xué)習(xí)態(tài)度全棧開(kāi)發(fā)學(xué)習(xí)路線(xiàn)很長(zhǎng)知識(shí)拓展很長(zhǎng)在這里收取很多人的建議以后決 前言 這里筑夢(mèng)師,是一名正在努力學(xué)習(xí)的iOS開(kāi)發(fā)工程師,目前致力于全棧方向的學(xué)習(xí),希望可以和大家一起交流技術(shù),共同進(jìn)步,用簡(jiǎn)書(shū)記錄下自己的學(xué)習(xí)歷程...
摘要:老實(shí)說(shuō),當(dāng)時(shí)一進(jìn)入世界的大門(mén)就暈了,各種規(guī)范概念和英文縮寫(xiě)詞能把人整的暈暈乎乎。等新的英文縮寫(xiě)又出現(xiàn)了,一口老血還沒(méi)來(lái)得及噴出,又重新振作開(kāi)始新的學(xué)習(xí)征程。 showImg(http://upload-images.jianshu.io/upload_images/1131767-1c5d16e39435df10.jpg?imageMogr2/auto-orient/strip%7Ci...
閱讀 2594·2021-09-22 15:15
閱讀 726·2021-09-02 15:11
閱讀 1913·2021-08-30 09:48
閱讀 1964·2019-08-30 15:56
閱讀 1605·2019-08-30 15:52
閱讀 2147·2019-08-30 15:44
閱讀 507·2019-08-29 16:29
閱讀 1607·2019-08-29 11:06