J2EE下的常用设计模式
簡單說兩句
本文首發公眾號【一名打字員】
對不住各位老鐵了,年前說好要更幾波JAVA的東西,又偷懶了,沒辦法,在這里用小錘錘偷偷錘了自己幾下。由于工作原因,更新時間不定,各位老鐵有問題可以私聊我哈。
對于初學者或者是正在向中高級的Java程序猿(打字員)來說,時刻梳理自己所掌握的知識是十分重要的,近期本打字員會整理一下關于J2EE下面的幾種常用的設計模式,并逐個解析,希望大家能夠一起鞏固一下相關掌握的知識點。
為什么要用設計模式
相信很多人都有這個疑問,有的人說在50萬行以下的項目中,設計模式基本是沒有用的。當然,除了讓我們code顯得更加專業之外,在自己所學習或者工作的項目中,適當合理的使用設計模式,能夠給項目帶來很大的好處。首先,使用了合理的模式,團隊里進行溝通協作會很方便,交流成本有時候特別高,特別是在程序員之間。其次恰當的使用設計模式可以用以解決特定場景的問題的一系列方法,幫助我們改善系統的設計,增強系統的健壯性、可擴展性,為以后鋪平道路。
最后用網絡上的一句概括來說,設計模式(Designpattern)就是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。
模式概覽
在實際的學習或者工作中,大家或多或少的會接觸或者使用一些Java的設計模式,在Java中存在23種設計模式,其圖如下:
其中主要分為三大類:
創建型模式
結構型模式
行為型模式
在文末會貼出所有的設計模式,其中本打字員映象里自己常用的模式一般有:
六大原則
在學習使用設計模式的時候,我們需要了解這六大原則:
單一原則
意思就是,我們在編寫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 | 訪問者模式 | 行為型 |
總結
以上是生活随笔為你收集整理的J2EE下的常用设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 结构与秩序是人类认识世界的结果也是工具
- 下一篇: 七天学会ASP.NET MVC (二)—