前言
本文主要是給大家簡(jiǎn)單地介紹一下設(shè)計(jì)模式的概念,文中會(huì)使用通俗易懂的案例,使你更好地學(xué)習(xí)本章知識(shí)點(diǎn)并理解原理,做到有道無(wú)術(shù)
一. 什么是設(shè)計(jì)模式
首先我們得知道什么是設(shè)計(jì)模式。所謂的設(shè)計(jì)模式(Design Pattern),其實(shí)就是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、提高代碼的可靠性。
這句話相信大家隨便上網(wǎng)查下就能找到,那到底什么是設(shè)計(jì)模式呢?又該如何正確地去使用呢?接下來(lái)就使用生活中通俗易懂的案例,來(lái)讓大家更淺顯地認(rèn)識(shí)設(shè)計(jì)模式。
二. 生活中的設(shè)計(jì)模式
1. 約會(huì)方式
大家在與異性約會(huì)的時(shí)候,吃飯、逛街、看電影是不是大家首選的套路呢?不對(duì),是計(jì)劃。
而這種計(jì)劃(套路)對(duì)于程序而言其實(shí)就類似是一種設(shè)計(jì)模式,當(dāng)然這種設(shè)計(jì)模式就非常簡(jiǎn)單直白了。
這種大帥B,肯定是會(huì)用更高級(jí)的計(jì)劃(套路),比如帶對(duì)象去聽(tīng)聽(tīng)音樂(lè)會(huì)、看話劇、旅旅游、看看風(fēng)景、單手法拉利秀個(gè)車技什么的,會(huì)讓對(duì)方充滿對(duì)下次的期待感,從而提高匹配成功的概率,還提高了效率。
在程序中也是如此,我們使用設(shè)計(jì)模式以及使用更優(yōu)的設(shè)計(jì)模式會(huì)讓程序更有效率、提高維護(hù)性、降低代碼的冗余。
2. 尋偶方式
如果你說(shuō)你沒(méi)對(duì)象,沒(méi)機(jī)會(huì)約會(huì),那就先找個(gè)對(duì)象吧。
在你需要尋找對(duì)象時(shí),有些時(shí)候你可能覺(jué)得在現(xiàn)實(shí)中去認(rèn)識(shí)一個(gè)新的異性會(huì)消耗的時(shí)間和精力很多,而且也不一定能從茫茫人海中找到自己心儀的異性。
如今的互聯(lián)網(wǎng)上有各種各樣的APP可供大家去認(rèn)識(shí)更多的人。從原本需要自己在現(xiàn)實(shí)中認(rèn)識(shí)異性,再通過(guò)接觸才能了解對(duì)方的信息,轉(zhuǎn)變成在APP上可以認(rèn)識(shí)到更多的人,甚至更快遇到心動(dòng)的異性,當(dāng)然也不一定是異性,不管如何這樣的轉(zhuǎn)變大大提高了效率。
而從程序的角度而言,自己收集信息轉(zhuǎn)換成在平臺(tái)上方便快捷地獲取到自己想要的數(shù)據(jù),提高了獲取結(jié)果的效率,這就是使用了設(shè)計(jì)模式的體現(xiàn)。
3. 信號(hào)燈
出去約會(huì)最重要的是什么,來(lái)教你,最重要的是出去,不出門怎么行。
那去到這個(gè)交通發(fā)達(dá)的現(xiàn)代社會(huì)中,公路上的十字路口基本上都會(huì)有紅綠燈,這是生活中習(xí)以為常的信號(hào)燈了。如果不存在紅綠燈的話,可想而知會(huì)是怎么樣的場(chǎng)景。而紅綠燈的規(guī)則大家都很熟悉,紅燈停、綠燈行。這個(gè)信號(hào)燈改變了我們的行為,提高了道路的通行率,減少了車禍的發(fā)生。
按程序角度而言,從隨意通行轉(zhuǎn)換成需要觀察然后根據(jù)現(xiàn)象來(lái)決定行為,提高了運(yùn)行效率,減少了錯(cuò)誤的發(fā)生,這也是使用了設(shè)計(jì)模式的體現(xiàn)。
三. 設(shè)計(jì)模式分類
GoF(指Gamma, Helm, Johnson & Vlissides, Addison-Wesley四人)于2005年提出的23種常用的設(shè)計(jì)模式,分為三大類型,分別是:
1. 創(chuàng)建型模式
關(guān)注對(duì)象的實(shí)例化用于解耦對(duì)象實(shí)例化過(guò)程
- 單例模式:一個(gè)類只存在一個(gè)實(shí)例對(duì)象
- 工廠模式:根據(jù)傳入的數(shù)據(jù)決定返回的對(duì)象
- 抽象工廠模式:根據(jù)相關(guān)對(duì)象的父類獲取對(duì)象,無(wú)需明確具體的類
- 建造者模式:根據(jù)步驟通過(guò)一個(gè)復(fù)雜的創(chuàng)建過(guò)程獲取對(duì)象
- 原型模式:復(fù)制原有的實(shí)例創(chuàng)建出新的實(shí)例
2. 結(jié)構(gòu)型模式
關(guān)注類與對(duì)象的結(jié)合,形成更強(qiáng)大的結(jié)構(gòu)
- 裝飾者模式:動(dòng)態(tài)地給對(duì)象添加功能
- 代理模式:給對(duì)象分配代理,通過(guò)代理來(lái)控制對(duì)象的訪問(wèn)
- 橋接模式:把抽象部分和實(shí)現(xiàn)部分分離開(kāi),使之能夠獨(dú)立變化
- 適配器模式:把類的方法接口轉(zhuǎn)換成需要的方法接口
- 組合模式:把對(duì)象以樹(shù)的結(jié)構(gòu)表示出層級(jí)關(guān)系
- 外觀模式:給系統(tǒng)提供對(duì)外訪問(wèn)統(tǒng)一的方法
- 亨元模式:使用共享技術(shù)減少對(duì)象的產(chǎn)生
3. 行為型模式
關(guān)注類與對(duì)象的交互,劃分職責(zé)和算法
- 觀察者模式:定義對(duì)象之間一對(duì)多的依賴關(guān)系
- 策略模式:封裝一系列算法,可以交替使用
- 模板方法模式:定義一個(gè)算法結(jié)構(gòu),允許子類為一個(gè)或多個(gè)步驟提供實(shí)現(xiàn)。
- 迭代器模式:使用統(tǒng)一的方式遍歷集合對(duì)象,無(wú)需了解集合對(duì)象的底層
- 命令模式:對(duì)命令進(jìn)行封裝,把發(fā)出命令和執(zhí)行命令分隔開(kāi)
- 備忘錄模式:保存對(duì)象的狀態(tài),在需要的時(shí)候恢復(fù)對(duì)象
- 中介模式:讓程序的組件通過(guò)中介對(duì)象來(lái)進(jìn)行間接溝通
- 解釋器模式:定義一個(gè)語(yǔ)言,并通過(guò)定義的解釋器來(lái)表示
- 狀態(tài)模式:使對(duì)象在內(nèi)部狀態(tài)改變時(shí)改變行為
- 責(zé)任鏈模式:把每個(gè)對(duì)象對(duì)其下個(gè)對(duì)象的引用連接成一條鏈,每個(gè)對(duì)象只負(fù)責(zé)各自的業(yè)務(wù)
- 訪問(wèn)者模式:不改變數(shù)據(jù)結(jié)構(gòu)的前提下,將作用于元素的操作封裝成獨(dú)立的類
這里有一個(gè)口訣可以幫助大家快速記憶:
單原建工象
代適橋裝外組享
狀觀中迭備解訪
命責(zé)模策
當(dāng)然除了這23種設(shè)計(jì)模式外,其實(shí)還有一些其他的設(shè)計(jì)模式。
四.設(shè)計(jì)原則
設(shè)計(jì)模式的構(gòu)建是要遵循一定的原則的,并不是我們想怎么玩就怎么玩,而這個(gè)原則就是所謂的設(shè)計(jì)原則,下面就給大家簡(jiǎn)單說(shuō)說(shuō)都有哪些設(shè)計(jì)原則。
1. 開(kāi)閉原則
對(duì)外部擴(kuò)展開(kāi)放,對(duì)內(nèi)部修改關(guān)閉。
2. 接口隔離原則
客戶端不依賴不需要的接口,類與類的依賴建立在最小的接口上。
3. 合成復(fù)用原則
類與類之間盡可能使用合成或者聚合,減少繼承的使用。
4. 里氏替換原則
任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。
5. 最少原則(迪米特法則)
對(duì)象與對(duì)象之間盡可能少交互。
6. 單一職責(zé)原則
對(duì)于一個(gè)類,應(yīng)該 只有一個(gè)引起該類變化的原因。
7. 依賴倒置原則
程序應(yīng)該依賴于抽象接口,不依賴具體實(shí)現(xiàn)。
這里還有個(gè)口訣,方便大家快速記住以上原則:開(kāi)口合里最單依。
五. 總結(jié)
最后給大家總結(jié)一下,設(shè)計(jì)模式其實(shí)就像咱們的人生一樣,出生,成長(zhǎng),成熟,衰老,死亡,這都是定律。
但是有些人活得稀里糊涂,有些人卻活得很精彩,就是因?yàn)檫@些人懂得如何用合適的方式去更好的生活??偠灾?,設(shè)計(jì)原則是生活中的行為準(zhǔn)則,遵循著一定的行為準(zhǔn)則而形成的流程、模式則是設(shè)計(jì)模式。后續(xù)我們會(huì)推出各個(gè)設(shè)計(jì)模式的詳細(xì)講解文章,敬請(qǐng)期待哦!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-476941.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-476941.html
到了這里,關(guān)于Java課堂之程序中的套路(設(shè)計(jì)模式的介紹)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!