Java成神路上之設計模式系列教程之一

Java成神路上之設計模式系列教程之一算法

千鋒-Feri設計模式

在Java工程師的平常中,是否遇到過以下問題:安全

Java 中什麼叫單例設計模式?請用Java 寫出線程安全的單例模式?框架

什麼是設計模式?你是否在你的代碼裏面使用過任何設計模式?工具

解釋下什麼是觀察者模式?學習

使用工廠模式最主要的好處是什麼?在哪裏使用?線程

等等相關的問題,那麼問題來了,究竟什麼是設計模式,它與咱們又有什麼關係?在咱們的平常開發中充當什麼樣的做用?設計

設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、通過分類的、代碼設計經驗的總結。使用設計模式的目的:爲了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性。 設計模式使代碼編寫真正工程化,也是軟件工程的基石脈絡,如同大廈的結構同樣。3d

可是,咱們須要知道的是,設計模式不是語法也不是規則,而是一套用來提升代碼可複用性、可維護性、可讀性、穩健性以及安全性的解決方案。咱們在平常使用的各類主流框架,好比Spring、MyBatis、SpringBoot等,都大量的使用各類設計模式。特別是作項目中須要考慮迭代性和擴容性的時候,這些都是一些不可多得的參考的內容。代理

說白了,設計模式能夠實現提升代碼的重用性,是代碼更易理解並保證代碼的可靠性

其實關於設計模式,是源自1995 年,Gang of Four(GoF)合做出版了《設計模式:可複用面向對象軟件的基礎》一書,共收錄了 23 種設計模式,今後樹立了軟件設計模式領域的里程碑,人稱「GoF設計模式」。

那麼這23種設計模式的本質是面向對象設計原則的實際運用,是對類的封裝、繼承和多態充分的應用和解釋。能夠這麼來講,這些設計模式就是表明着面向對象的核心應用和主題思想。

固然,設計模式只是一個引導,在實際的應用開發中,必須根據具體的需求來選擇,好比,對於簡單的應用,可能寫一個簡單的算法要比引入某種設計模式更加容易(ps其實這樣的應用充斥着咱們平常的開發工做)。可是對於大型應用開發或者框架、工具、中間件設計,用設計模式來組織代碼顯然更爲恰當。

整體來講,咱們根據每種設計模式的用途,將設計模式劃分爲三大類,建立型模式、結構型模式和行爲型模式,接下來就分別聊聊這三種的歸屬:

一、建立型模式:就是用來描述怎如何建立對象,來建立對象的模式,抽象了實例化的過程。建立型模式在建立什麼(what)、由誰來建立(who)、以及什麼時候建立(when)這些方面,都爲設計者提供了儘量大的靈活性。一共包含5種設計模式,工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。

二、結構型模式:就是討論的是類和對象的結構,通常採用繼承機制來組合接口或實現(類結構型模式),或者經過組合一些對象實現新的功能(對象結構型模式),一共有7種設計模式,適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

三、行爲型模式:就是用來描述類或對象之間如何進行相互協做,關注的是對象的行爲,用來解決對象之間的聯繫問題。一共有11種設計模式,策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

合起來就是5種建立型+7種結構型+11種行爲型,一共爲23種設計模式,下圖附上者23種設計模式之間的相互關係,有助於咱們後面持續學習設計模式。

圖1-1 23種設計模式之間的相互關係

相關文章
相關標籤/搜索