設計模式(1)—什麼是設計模式?設計模式的六大原則是什麼?

只有登上山頂,才能看到那邊的風光前端

目錄編程

1.什麼設計模式

2.設計模式的發展後端

3.設計原則6大原則設計模式

3.1 開閉原則編程語言

3.2  里氏轉換原則ide

3.3 依賴倒轉原則spa

3.4  接口隔離原則設計

3.5 合成/聚合複用原則 對象

3.6 迪米特原則blog


1.什麼設計模式

軟件設計模式(Design pattern),又稱設計模式,是一套被反覆使用、多數人知曉的、通過分類編目的、代碼設計經驗的總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性、程序的重用性。設計模式使代碼開發真正工程化;設計模式是軟件工程的基石脈絡,如同大廈的結構同樣。只有夯實地基搭好結構,才能蓋好堅壯的大樓。也是咱們邁向高級開發人員必經的一步。即12字真言:設計模式是設計經驗的總結

2.設計模式的發展

提及設計模式的發展,還要從四個男人的故事(注意此處沒有女人)開始提及,這四個男人分別是 Erich Gamma, Richard Helm,Ralph Johnson,和John Vlissides,他們是軟件設計領域的四位世界頂級大師,那軟件設計水平真是不知道高到哪裏去了,反正我是自愧不如。這四位大佬合著了一本書《設計模式:可複用面向對象軟件的基礎》, 提出了23種基本設計模式,從理論高度提煉並規範了設計模式,對面向對象設計,軟件複用領域產生了巨大影響。如今設計模式已經被應用到各類各樣的編程語言中,不論是後端的Java,C#仍是前端的JavaScript, 你都能看到它的身影,設計模式最大的魅力在於,無論在那種編程語言中,它思想和表現都是同樣的,只是代碼語法略有不一樣而已。

3.設計模式6大原則

設計模式存在的根本緣由是爲了更好地複用代碼,增長代碼可維護性。

因此有以下6大原則:

3.1 開閉原則

       對擴展開放,對修改關閉, 即在程序須要進行拓展的時候,不能去修改原有的代碼,只能增長新的代碼。

這樣的例子在咱們的生活中隨處可見,好比在各類選秀比賽裏,若是兩個選手在比賽中打成了平手,咱們不可能說經過穿越到過去,去改變過去的結果,讓他們不打成平手,這是不可能實現的。可是咱們能夠經過添加附加的比賽,決定他們的勝負。即已經發生的已經不能夠改變 ,咱們只能改變那些事情對如今的影響。

3.2  里氏轉換原則

        子類繼承父類,任何基類出現的地方,必定能夠用子類替代出現。

這怎麼理解呢?好比說你的朋友u盤A中有一些小電影,一天大家像往常同樣,把u盤A插入電腦準備一塊兒欣賞小電影,卻發現u盤A壞了。這給正在興致勃勃的大家頓時澆了一盆涼水,這時候你靈機一動說,幸虧老子有備份。原來以前你已經把朋友u盤A中的小電影複製到了你的 u盤B中,並且你的u盤B中除了從朋友哪兒複製的小電影,還有一些其它不可描述的內容,這時候你有點猶豫要不要用本身的U盤B,看着正在興頭上的朋友,你一咬牙一跺腳說算了,無論那麼多了,淦。因而你拔下朋友的u盤A插入本身的u盤B,順利打開電影,因而大家又興致勃勃的觀看起來。即子類是對父類的徹底複製,父類能夠被子類徹底替代,子類能夠增長新的內容,並且不影響父類。

3.3 依賴倒轉原則

         引用一個對象,若是這個對象有底層類型,直接引用底層類型。

說到這裏不得不吐槽一些博客的博主,好歹也是寫代碼的,寫博客的時候真沒有一點設計模式的原則。前幾天在網上搜一個問題,打開一看給我貼了一個另外博客的連接,打開這個連接以後又貼了另一個博客的連接。。。。。。,你引用別人的博客我不反對,你這引用引用的博客就過度了吧。  總結一句話:引用的時候禁止套娃,直接引用最底層的類型

3.4  接口隔離原則

使用多個隔離的接口,比使用單個接口要好,每個接口應該是一種角色。

好比咱們的電腦上有多種不一樣類型的接口,像USB接口,電源接口,高清輸出接口等等,它們各自有着不一樣的功能,那麼爲何不用一個接口完成全部的功能呢,這是由於不一樣的設備,有不一樣的數據規格,並且數據帶寬需求也是是不一樣的,讓他們都使用同一個接口是不科學的,這從usb與hdmi設備的使用環境就能看出來差異。但你也不能每一個設備都分一個接口,這是不現實的,應該把統一數據規格的設備分爲一個接口,例如USB接口能夠同時支持,鼠標鍵盤和U盤。即便用多個接口,比使用單個接口要好,可是小得要有限度。

3.5  合成/聚合複用原則

新的對象應使用一些已有的對象,使之成爲新對象的一部分。

舉個例子:週末天氣晴朗,你和好朋友約好一塊兒去登山(不是張東昇的那種登山),這時候就須要有一個相機,可是不巧的是你的相機壞了,因而你就拿着相機來到了修理店。老闆告訴你有一個零件壞了,問你是要更換零件,仍是再買一個新的呢?你內心MMP了一句對老闆說,固然是更換零件了,我這相機纔買沒多久還新着呢。即用已經有的東西合成新的東西,使原來的東西成爲新東西的一部分。

3.6 迪米特原則

      一個實體應當儘可能少的與其餘實體之間發生相互做用,使得系統功能模塊相對獨立,即一個對象應對其餘對象有儘量少的瞭解。

這裏的對象能夠理解爲對象(女友),假如你是一個時間管理大師,同時交往了多個對象,固然因爲身經百戰,你對這些對象應付自如,不像咱們這些老實人,一個都應付不來。可是這是你的小祕密,爲了避免讓她們發現這個祕密,你就應該使這些對象之間應該儘量少的瞭解,甚至徹底不瞭解,若是她們之間瞭解過多,在相互八卦或者看朋友圈的時候,發現了你的這個小祕密,那但是要出大事情的(喜歡多人運動的除外)。即多個對象之間應該儘可能避免有任何關聯。

本文只對設計模式進行了簡單的介紹,有些例子可能也不太合適。若是想對設計模式有更多的瞭解,推薦看上文中四位大佬的那本書:《設計模式:可複用面向對象軟件的基礎》。

原創不易,若是以爲不錯的話歡迎關注,轉發,感謝!
81b6b0ad913781e4afa2d248e3e4bca.png

相關文章
相關標籤/搜索