教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

軟件設(shè)計(jì)模式分類有哪些分類?

更新時(shí)間:2021年07月23日16時(shí)14分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)


軟件設(shè)計(jì)模式的產(chǎn)生背景

"設(shè)計(jì)模式"最初并不是出現(xiàn)在軟件設(shè)計(jì)中,而是被用于建筑領(lǐng)域的設(shè)計(jì)中。

1977年美國(guó)著名建筑大師、加利福尼亞大學(xué)伯克利分校環(huán)境結(jié)構(gòu)中心主任克里斯托夫·亞歷山大(Christopher Alexander)在他的著作《建筑模式語(yǔ)言:城鎮(zhèn)、建筑、構(gòu)造》中描述了一些常見(jiàn)的建筑設(shè)計(jì)問(wèn)題,并提出了 253 種關(guān)于對(duì)城鎮(zhèn)、鄰里、住宅、花園和房間等進(jìn)行設(shè)計(jì)的基本模式。

1990年軟件工程界開(kāi)始研討設(shè)計(jì)模式的話題,后來(lái)召開(kāi)了多次關(guān)于設(shè)計(jì)模式的研討會(huì)。直到1995 年,艾瑞克·伽馬(ErichGamma)、理査德·海爾姆(Richard Helm)、拉爾夫·約翰森(Ralph Johnson)、約翰·威利斯迪斯(John Vlissides)等 4 位作者合作出版了《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》一書(shū),在此書(shū)中收錄了 23 個(gè)設(shè)計(jì)模式,這是設(shè)計(jì)模式領(lǐng)域里程碑的事件,導(dǎo)致了軟件設(shè)計(jì)模式的突破。這 4 位作者在軟件開(kāi)發(fā)領(lǐng)域里也以他們的“四人組”(Gang of Four,GoF)著稱。


軟件設(shè)計(jì)模式的概念

軟件設(shè)計(jì)模式(Software Design Pattern),又稱設(shè)計(jì)模式,是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。它描述了在軟件設(shè)計(jì)過(guò)程中的一些不斷重復(fù)發(fā)生的問(wèn)題,以及該問(wèn)題的解決方案。也就是說(shuō),它是解決特定問(wèn)題的一系列套路,是前輩們的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),具有一定的普遍性,可以反復(fù)使用。


學(xué)習(xí)設(shè)計(jì)模式的必要性

設(shè)計(jì)模式的本質(zhì)是面向?qū)ο笤O(shè)計(jì)原則的實(shí)際運(yùn)用,是對(duì)類的封裝性、繼承性和多態(tài)性以及類的關(guān)聯(lián)關(guān)系和組合關(guān)系的充分理解。

正確使用設(shè)計(jì)模式具有以下優(yōu)點(diǎn)。

·可以提高程序員的思維能力、編程能力和設(shè)計(jì)能力。

·使程序設(shè)計(jì)更加標(biāo)準(zhǔn)化、代碼編制更加工程化,使軟件開(kāi)發(fā)效率大大提高,從而縮短軟件的開(kāi)發(fā)周期。

·使設(shè)計(jì)的代碼可重用性高、可讀性強(qiáng)、可靠性高、靈活性好、可維護(hù)性強(qiáng)。


設(shè)計(jì)模式分類有哪些分類?

創(chuàng)建型模式

用于描述“怎樣創(chuàng)建對(duì)象”,它的主要特點(diǎn)是“將對(duì)象的創(chuàng)建與使用分離”。GoF(四人組)書(shū)中提供了單例、原型、工廠方法、抽象工廠、建造者等 5 種創(chuàng)建型模式。

結(jié)構(gòu)型模式

用于描述如何將類或?qū)ο蟀茨撤N布局組成更大的結(jié)構(gòu),GoF(四人組)書(shū)中提供了代理、適配器、橋接、裝飾、外觀、享元、組合等 7 種結(jié)構(gòu)型模式。

行為型模式

用于描述類或?qū)ο笾g怎樣相互協(xié)作共同完成單個(gè)對(duì)象無(wú)法單獨(dú)完成的任務(wù),以及怎樣分配職責(zé)。GoF(四人組)書(shū)中提供了模板方法、策略、命令、職責(zé)鏈、狀態(tài)、觀察者、中介者、迭代器、訪問(wèn)者、備忘錄、解釋器等 11 種行為型模式。



猜你喜歡:

JavaJDK是什么?JDK安裝目錄介紹

Java文件上傳如何實(shí)現(xiàn)的?

Java類的定義格式:Java如何定義一個(gè)類

什么是JavaSE和JavaEE?

傳智教育java開(kāi)發(fā)培訓(xùn)課程

0 分享到:
和我們?cè)诰€交談!