設計模式以前言

序言編程

在IT圈子的朋友應該有這樣的體會:構建一個優秀的系統最困難之處不在於編碼(coding),而是在早期作出的設計(design)上的決定。設計是軟件開發生命週期中的關鍵階段,好的設計能產生好的產品,而不當的設計則會影響最終產品的質量。一個軟件設計的優劣,每每越到後期拓展越能體現出差別。設計模式

再說一個我周邊一個比較廣泛的現象:
        開發人員在入行初期,拿到需求以後,大刀闊斧直接開始上手coding,而後就被反反覆覆的產品大大折磨的不要不要的。
        開發人員在入行中期,有了開始被產品大大折磨的陰影,你們在拿到需求以後都學聰明瞭,開始下意識的從產品的角度出發,思考軟件在不一樣的業務場景下怎麼樣才能「偷懶」少改點代碼。
        開發人員入行久了以後,對「偷懶」這個詞都有了本身的看法,會主動的去思考設計是什麼?怎麼才能設計一個更優的軟件?怎麼才能讓本身「少動手」?
        上面就是咱們主觀或者下意識的對設計模式進行運用。那麼咱們來一塊兒詳細的研究下設計模式究竟是什麼,它是如何幫咱們「偷懶」的。markdown

軟件設計模式的概念

軟件設計模式(Software Design Pattern),又稱設計模式,是一套被反覆使用、多數人知曉的、通過分類編目的、代碼設計經驗的總結。它描述了在軟件設計過程當中的一些不斷重複發生的問題,以及該問題的解決方案。也就是說,它是解決特定問題的一系列套路,是前輩們的代碼設計經驗的總結,具備必定的廣泛性,能夠反覆使用。其目的是爲了提升代碼的可重用性、代碼的可讀性和代碼的可靠性。ide

設計模式的做用及意義

設計模式的本質是面向對象設計原則的實際運用,是對對象的封裝性、繼承性和多態性,以及類之間的關聯和組合關係的高度抽象。正確使用設計模式具備如下優勢:
1)重用設計和代碼,重用設計比重用代碼更有意義,設計的重用自動帶來代碼重用學習

2)提升擴展性,大量使用面向接口編程,預留擴展插槽,新的功能或特性很容易加入到系統中來編碼

3)提升靈活性,經過組合提升靈活性,可容許代碼修改平穩發生,對一處修改不會波及到其餘模塊atom

4) 提升開發效率 ,正確使用設計模式,能夠節省大量的時間設計

設計模式的要素

軟件設計模式令人們能夠更加簡單方便地複用成功的設計和體系結構,它一般包含如下要素:模式名稱、別名、動機、問題、解決方案、效果、結構、模式角色、合做關係、實現方法、適用性、已知應用、例程、模式擴展和相關模式等。能夠看到,加起來林林總總十幾個,爲了便於理解與學習,我總結出4大要素,簡稱4W要素:對象

1.who:

        指軟件的用戶羣體,設計時定位軟件服務用戶羣體,從服務用戶羣體的角度進行設計。繼承

2.when

        指使用軟件的用戶的使用習慣,會在何時使用,依此進行軟件設計。例如:考勤軟件在上下班時是使用高峯,剩餘時間則幾乎無人使用,軟件根據高低峯對資源進行動態分配設計。

3.where

        指軟件的使用場景,思考用戶會在哪些應用場景須要用到本軟件,根據豐富的使用場景進行抽象設計

4.what

        指軟件的用途,設計要了解用戶用軟件都是用來作什麼,依據現實進行設計,畢竟脫離現實的設計都是耍流氓。

總結起來就是一句話:什麼人在什麼時間什麼地點用來作什麼

設計模式的大綱就介紹到着,下一篇文章咱們繼續聊一聊設計模式的七大原則

相關文章
相關標籤/搜索