本文首發公衆號【一名打字員】程序員
對不住各位老鐵了,年前說好要更幾波JAVA的東西,又偷懶了,沒辦法,在這裏用小錘錘偷偷錘了本身幾下。因爲工做緣由,更新時間不定,各位老鐵有問題能夠私聊我哈。編程
對於初學者或者是正在向中高級的Java程序猿(打字員)來講,時刻梳理本身所掌握的知識是十分重要的,近期本打字員會整理一下關於J2EE下面的幾種經常使用的設計模式,並逐個解析,但願你們可以一塊兒鞏固一下相關掌握的知識點。設計模式
相信不少人都有這個疑問,有的人說在50萬行如下的項目中,設計模式基本是沒有用的。固然,除了讓咱們code顯得更加專業以外,在本身所學習或者工做的項目中,適當合理的使用設計模式,可以給項目帶來很大的好處。首先,使用了合理的模式,團隊裏進行溝通協做會很方便,交流成本有時候特別高,特別是在程序員之間。其次恰當的使用設計模式能夠用以解決特定場景的問題的一系列方法,幫助咱們改善系統的設計,加強系統的健壯性、可擴展性,爲之後鋪平道路。網絡
最後用網絡上的一句歸納來講,設計模式(Designpattern)就是一套被反覆使用、多數人知曉的、通過分類編目的、代碼設計經驗的總結。框架
在實際的學習或者工做中,你們或多或少的會接觸或者使用一些Java的設計模式,在Java中存在23種設計模式,其圖以下:學習
其中主要分爲三大類:ui
在文末會貼出全部的設計模式,其中本打字員映象裏本身經常使用的模式通常有:spa
在學習使用設計模式的時候,咱們須要瞭解這六大原則:設計
意思就是,咱們在編寫bug,不對,編寫代碼的時候在一個功能類中儘可能負責單一的功能,這個功能應當儘可能的烤爐周全,保持極致。代理
這個原則可能你們乍一眼不怎麼可以理解,與C#中里氏替換原則一致,這個意思就是一個子類可以替換父類而且可以正常的工做。有機智的童鞋要舉手提問了,那Java中的多態會不會違背這種原則呢,其實否則。所謂的里氏替換原則就是讓你的某一段程序耦合於基類或者接口,而不是具體繼承了基類的子類或實現接口的具體類型。僅替換子類不會讓你這個程序的屬性有所改變。所謂多態機制,則是給了你達成上述原則的其中一種能力。
這個應該比較好理解,見字如意。這個接口也叫作接口最小化原則,強調的是一個接口擁有的行爲應該儘量的小。
這個強調了高層模塊不應依賴於低層模塊,兩者都應該依賴於抽象,抽象不該該依賴於細節,細節應該依賴於抽象。
也稱最小知道原則,即一個類應該儘可能不要知道其餘類太多的東西,不要和陌生的類有太多接觸。
其實本打字員也對這個原則有點模糊,可是大致的意思就是一句話對修改關閉,對擴展開放。在網上瀏覽相關文章的時候提到過一句在大話設計模式中出現的總結,「用抽象構建框架,用細節實現擴展」。我想這句話也許是對總體的原則作出的最好的解釋了吧。
說實話,本打字員也不知道本身什麼時候放棄,會中止編程,會再也不擼代碼,由於這份工做對精神上的消耗確實很大。可是既然咱們依然堅持在這個崗位上,咱們就應該本着一名程序員的心態,去學習新的技術與知識,維護和鞏固現有的知識點,爲成爲本身想象中的本身而努力吧。
附:
模式 | 名稱 | 所屬分類 |
---|---|---|
Abstract Factory | 抽象工廠模式 | 建立型 |
Builder | 建造模式 | 建立型 |
Factory Method | 工廠方法模式 | 建立型 |
Prototype | 原始模型模式 | 建立型 |
Singleton | 單例模式 | 建立型 |
Adapter | 適配器(變壓器)模式 | 結構型 |
Bridge | 橋樑模式 | 結構型 |
Composite | 合成模式 | 結構型 |
Decorator | 裝飾模式 | 結構型 |
Facade | 門面模式 | 結構型 |
Flyweight | 享元模式 | 結構型 |
Proxy | 代理模式 | 結構型 |
Chain Of Responsibility | 責任鏈模式 | 行爲型 |
Command | 命令模式 | 行爲型 |
Interpreter | 解釋器模式 | 行爲型 |
Iterator | 迭代子模式 | 行爲型 |
Mediator | 調停者模式 | 行爲型 |
Memento | 備忘錄模式 | 行爲型 |
Observer | 觀察者模式 | 行爲型 |
State | 狀態模式 | 行爲型 |
Strategy | 策略模式 | 行爲型 |
Template Method | 模板方法模式 | 行爲型 |
Visitor | 訪問者模式 | 行爲型 |