黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 適合小白學(xué)習(xí)的設(shè)計(jì)模式教程

適合小白學(xué)習(xí)的設(shè)計(jì)模式教程

更新時(shí)間:2021-10-18 12:21:51 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1288次

設(shè)計(jì)模式在軟件開發(fā)人員中非常流行。設(shè)計(jì)模式是對(duì)常見軟件問題的詳細(xì)描述的解決方案。

適合小白學(xué)習(xí)的設(shè)計(jì)模式教程

Java設(shè)計(jì)模式

使用設(shè)計(jì)模式的一些好處是:

設(shè)計(jì)模式已經(jīng)定義并提供了行業(yè)標(biāo)準(zhǔn)方法來解決重復(fù)出現(xiàn)的問題,因此如果我們明智地使用設(shè)計(jì)模式可以節(jié)省時(shí)間。我們可以在基于 Java 的項(xiàng)目中使用許多 Java 設(shè)計(jì)模式。

使用設(shè)計(jì)模式可提高可重用性,從而產(chǎn)生更健壯和高度可維護(hù)的代碼。它有助于降低軟件產(chǎn)品的總擁有成本 (TCO)。

由于已經(jīng)定義了設(shè)計(jì)模式,它使我們的代碼易于理解和調(diào)試。它可以加快開發(fā)速度,并且團(tuán)隊(duì)的新成員很容易理解它。

Java設(shè)計(jì)模式分為三類——創(chuàng)建型、結(jié)構(gòu)型和行為型設(shè)計(jì)模式。

創(chuàng)建型設(shè)計(jì)模式

創(chuàng)建型設(shè)計(jì)模式提供了針對(duì)特定情況以最佳方式實(shí)例化對(duì)象的解決方案。

1.單例模式

單例模式限制類的實(shí)例化,并確保 Java 虛擬機(jī)中只存在類的一個(gè)實(shí)例。它看起來是一個(gè)非常簡單的設(shè)計(jì)模式,但是當(dāng)涉及到實(shí)現(xiàn)時(shí),它會(huì)帶來很多實(shí)現(xiàn)問題。單例模式的實(shí)現(xiàn)一直是開發(fā)者之間有爭議的話題。查看單例設(shè)計(jì)模式以了解實(shí)現(xiàn)單例模式的不同方法以及每種方法的優(yōu)缺點(diǎn)。這是討論最多的 Java 設(shè)計(jì)模式之一。

2.工廠??模式

當(dāng)我們有一個(gè)具有多個(gè)子類的超類并且基于輸入,我們需要返回一個(gè)子類時(shí),使用工廠設(shè)計(jì)模式。這種模式將類實(shí)例化的責(zé)任從客戶端程序轉(zhuǎn)移到工廠類。我們可以在 Factory 類上應(yīng)用單例模式或?qū)⒐S方法設(shè)為靜態(tài)。

3.抽象工廠模式

抽象工廠模式類似于工廠模式,它是一個(gè)工廠的工廠。如果您熟悉 java 中的工廠設(shè)計(jì)模式,您會(huì)注意到我們有一個(gè) Factory 類,它根據(jù)提供的輸入返回不同的子類,并且工廠類使用 if-else 或 switch 語句來實(shí)現(xiàn)這一點(diǎn)。

在抽象工廠模式中,我們擺脫了 if-else 塊,為每個(gè)子類創(chuàng)建了一個(gè)工廠類,然后是一個(gè)抽象工廠類,它將根據(jù)輸入的工廠類返回子類。查看抽象工廠模式以了解如何使用示例程序?qū)崿F(xiàn)此模式。

4.建造者模式

引入這種模式是為了解決當(dāng)對(duì)象包含大量屬性時(shí)工廠和抽象工廠設(shè)計(jì)模式的一些問題。構(gòu)建器模式通過提供一種逐步構(gòu)建對(duì)象的方法并提供實(shí)際返回最終對(duì)象的方法,解決了大量可選參數(shù)和不一致狀態(tài)的問題。查看Builder Pattern,了解 JDK 中使用的示例程序和類。<

5.原型模式

當(dāng)對(duì)象創(chuàng)建是一件代價(jià)高昂的事情并且需要大量時(shí)間和資源并且您已經(jīng)存在類似的對(duì)象時(shí),使用原型模式。所以這個(gè)模式提供了一種機(jī)制,可以將原始對(duì)象復(fù)制到一個(gè)新對(duì)象,然后根據(jù)我們的需要進(jìn)行修改。此模式使用 java 克隆來復(fù)制對(duì)象。

原型設(shè)計(jì)模式要求您正在復(fù)制的對(duì)象應(yīng)提供復(fù)制功能。它不應(yīng)該由任何其他類完成。然而,是使用Object 屬性的淺拷貝還是深拷貝取決于需求,這是一個(gè)設(shè)計(jì)決定。

結(jié)構(gòu)設(shè)計(jì)模式

結(jié)構(gòu)模式提供了創(chuàng)建類結(jié)構(gòu)的不同方法,例如使用繼承和組合從小對(duì)象創(chuàng)建大對(duì)象。

1. 適配器模式

適配器設(shè)計(jì)模式是結(jié)構(gòu)設(shè)計(jì)模式之一,它用于使兩個(gè)不相關(guān)的接口可以一起工作。連接這些不相關(guān)接口的對(duì)象稱為適配器。作為現(xiàn)實(shí)生活中的例子,我們可以將移動(dòng)充電器視為適配器,因?yàn)橐苿?dòng)電池需要 3 伏才能充電,但普通插座產(chǎn)生 120V(美國)或 240V(印度)。因此,移動(dòng)充電器充當(dāng)移動(dòng)充電插座和壁式插座之間的適配器。

2. 復(fù)合模式

復(fù)合模式是結(jié)構(gòu)設(shè)計(jì)模式之一,當(dāng)我們必須表示部分-整體層次結(jié)構(gòu)時(shí)使用。當(dāng)我們需要以一種必須以相同方式處理結(jié)構(gòu)中的對(duì)象的方式創(chuàng)建結(jié)構(gòu)時(shí),我們可以應(yīng)用復(fù)合設(shè)計(jì)模式。

3. 代理模式

代理模式的意圖是“為另一個(gè)對(duì)象提供代理或占位符以控制對(duì)其的訪問”。定義本身非常清晰,當(dāng)我們想要提供對(duì)功能的受控訪問時(shí)使用代理模式。

假設(shè)我們有一個(gè)可以在系統(tǒng)上運(yùn)行某些命令的類。現(xiàn)在,如果我們正在使用它,那很好,但是如果我們想將此程序提供給客戶端應(yīng)用程序,它可能會(huì)出現(xiàn)嚴(yán)重問題,因?yàn)榭蛻舳顺绦蚩梢园l(fā)出命令來刪除一些系統(tǒng)文件或更改一些您不想要的設(shè)置. 查看帶有實(shí)現(xiàn)細(xì)節(jié)的示例程序的代理模式帖子。

4.享元模式

當(dāng)我們需要?jiǎng)?chuàng)建一個(gè)類的大量對(duì)象時(shí),使用享元設(shè)計(jì)模式。由于每個(gè)對(duì)象都消耗對(duì)低內(nèi)存設(shè)備(例如移動(dòng)設(shè)備或嵌入式系統(tǒng))至關(guān)重要的內(nèi)存空間,因此可以應(yīng)用享元設(shè)計(jì)模式通過共享對(duì)象來減少內(nèi)存負(fù)載。java中的字符串池實(shí)現(xiàn)是享元模式實(shí)現(xiàn)的最好例子之一。

5. 外觀圖案

Facade Pattern 用于幫助客戶端應(yīng)用程序輕松地與系統(tǒng)交互。假設(shè)我們有一個(gè)應(yīng)用程序有一組接口來使用 MySql/Oracle 數(shù)據(jù)庫并生成不同類型的報(bào)告,例如 HTML 報(bào)告、PDF 報(bào)告等。所以我們將有一組不同的接口來處理不同類型的數(shù)據(jù)庫. 現(xiàn)在,客戶端應(yīng)用程序可以使用這些接口來獲取所需的數(shù)據(jù)庫連接并生成報(bào)告。但是當(dāng)復(fù)雜度增加或接口行為名稱混亂時(shí),客戶端應(yīng)用程序會(huì)發(fā)現(xiàn)很難管理它。所以我們可以在這里應(yīng)用 Facade 模式,并在現(xiàn)有接口之上提供一個(gè)包裝器接口來幫助客戶端應(yīng)用程序。查看Facade Pattern帖子以獲取實(shí)現(xiàn)細(xì)節(jié)和示例程序。

6. 橋接模式

當(dāng)我們?cè)诮涌诤蛯?shí)現(xiàn)中都有接口層次結(jié)構(gòu)時(shí),橋接設(shè)計(jì)模式用于將接口與實(shí)現(xiàn)分離,并向客戶端程序隱藏實(shí)現(xiàn)細(xì)節(jié)。與適配器模式一樣,它是結(jié)構(gòu)設(shè)計(jì)模式之一。

橋接設(shè)計(jì)模式的實(shí)現(xiàn)遵循更喜歡組合而不是繼承的概念。

行為設(shè)計(jì)模式

行為模式為對(duì)象之間更好的交互以及如何提供失去耦合和靈活性以輕松擴(kuò)展提供了解決方案。

1. 模板方法模式

模板方法是一種行為設(shè)計(jì)模式,用于創(chuàng)建方法存根并將一些實(shí)現(xiàn)步驟推遲到子類。模板方法定義了執(zhí)行算法的步驟,它可以提供一個(gè)默認(rèn)實(shí)現(xiàn),該實(shí)現(xiàn)可能對(duì)所有或部分子類都是通用的。

2. 中介模式

中介者設(shè)計(jì)模式用于在系統(tǒng)中的不同對(duì)象之間提供集中的通信媒介。中介器設(shè)計(jì)模式在多個(gè)對(duì)象相互交互的企業(yè)應(yīng)用程序中非常有用。如果對(duì)象之間直接交互,系統(tǒng)組件之間是緊密耦合的,這使得可維護(hù)性成本更高,并且不容易靈活擴(kuò)展。中介者模式專注于為對(duì)象之間的通信提供中介者,幫助實(shí)現(xiàn)對(duì)象間的解耦。

空中交通管制員是中介模式的一個(gè)很好的例子,其中機(jī)場控制室充當(dāng)不同航班之間通信的中介。中介者充當(dāng)對(duì)象之間的路由器,它可以擁有自己的邏輯來提供一種通信方式。

3.責(zé)任鏈模式

責(zé)任鏈模式用于在軟件設(shè)計(jì)中實(shí)現(xiàn)松散耦合,其中來自客戶端的請(qǐng)求被傳遞到對(duì)象鏈以處理它們。然后鏈中的對(duì)象將決定誰將處理請(qǐng)求以及是否需要將請(qǐng)求發(fā)送到鏈中的下一個(gè)對(duì)象。

我們知道在一個(gè) try-catch 塊代碼中可以有多個(gè) catch 塊。這里的每個(gè) catch 塊都是處理該特定異常的處理器。所以當(dāng) try 塊中發(fā)生異常時(shí),它會(huì)被發(fā)送到第一個(gè) catch 塊進(jìn)行處理。如果 catch 塊無法處理它,它會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到鏈中的下一個(gè)對(duì)象,即下一個(gè) catch 塊。如果即使是最后一個(gè) catch 塊也無法處理它,則異常會(huì)被拋出到調(diào)用程序的鏈外。

4.觀察者模式

當(dāng)您對(duì)對(duì)象的狀態(tài)感興趣并希望在發(fā)生任何更改時(shí)得到通知時(shí),觀察者設(shè)計(jì)模式非常有用。在觀察者模式中,監(jiān)視另一個(gè)對(duì)象狀態(tài)的對(duì)象稱為Observer,正在監(jiān)視的對(duì)象稱為Subject。

Java 通過 java.util.Observable 類和 java.util.Observer 接口為實(shí)現(xiàn)觀察者模式提供了一個(gè)內(nèi)置平臺(tái)。然而,它并沒有被廣泛使用,因?yàn)樗膶?shí)現(xiàn)非常簡單,而且大多數(shù)時(shí)候我們不想為了實(shí)現(xiàn)觀察者模式而最終擴(kuò)展一個(gè)類,因?yàn)?java 不提供類中的多重繼承。

Java 消息服務(wù) (JMS) 使用觀察者模式和中介者模式來允許應(yīng)用程序訂閱和發(fā)布數(shù)據(jù)到其他應(yīng)用程序。

策略模式也稱為策略模式。我們定義了多個(gè)算法,并讓客戶端應(yīng)用程序傳遞要用作參數(shù)的算法。這種模式的最佳示例之一是采用Comparator參數(shù)的 Collections.sort() 方法?;?Comparator 接口的不同實(shí)現(xiàn),對(duì)象以不同的方式進(jìn)行排序。

要實(shí)現(xiàn)我們的文件系統(tǒng)實(shí)用程序,首先,我們需要?jiǎng)?chuàng)建將實(shí)際完成所有工作的接收器類。由于我們根據(jù) Java 接口進(jìn)行編碼,因此我們可以擁有 FileSystemReceiver 接口及其針對(duì)不同操作系統(tǒng)風(fēng)格(如 Windows、Unix、Solaris 等)的實(shí)現(xiàn)類。

5. 訪客模式

當(dāng)我們必須對(duì)一組相似類型的對(duì)象執(zhí)行操作時(shí),使用訪問者模式。在訪問者模式的幫助下,我們可以將操作邏輯從對(duì)象移動(dòng)到另一個(gè)類。

例如,考慮一個(gè)購物車,我們可以在其中添加不同類型的商品(元素),當(dāng)我們單擊結(jié)帳按鈕時(shí),它會(huì)計(jì)算要支付的總金額。現(xiàn)在我們可以在項(xiàng)目類中擁有計(jì)算邏輯,或者我們可以使用訪問者模式將此邏輯移到另一個(gè)類中。讓我們?cè)谠L問者模式的示例中實(shí)現(xiàn)這一點(diǎn)。

6. 解釋器模式

用于定義語言的語法表示并提供解釋器來處理該語法。

這種模式的最好例子是一個(gè) java 編譯器,它將 java 源代碼解釋為 JVM 可以理解的字節(jié)碼。谷歌翻譯也是解釋器模式的一個(gè)例子,其中輸入可以是任何語言,我們可以用另一種語言解釋輸出。

7. 迭代器模式

一種行為模式中的迭代器模式,它用于提供遍歷一組對(duì)象的標(biāo)準(zhǔn)方法。迭代器模式廣泛用于Java 集合框架,其中迭代器接口提供遍歷集合的方法。

迭代器模式不僅僅是遍歷一個(gè)集合,我們還可以根據(jù)我們的需求提供不同類型的迭代器。迭代器模式隱藏了遍歷集合的實(shí)際實(shí)現(xiàn),客戶端程序只使用迭代器方法。

8. 紀(jì)念品模式

當(dāng)我們想要保存對(duì)象的狀態(tài)以便我們以后可以恢復(fù)時(shí),可以使用備忘錄設(shè)計(jì)模式。備忘錄模式用于以這樣的方式實(shí)現(xiàn)這一點(diǎn),即對(duì)象的保存狀態(tài)數(shù)據(jù)在對(duì)象外部不可訪問,這保護(hù)了保存狀態(tài)數(shù)據(jù)的完整性。

Memento 模式是用兩個(gè)對(duì)象實(shí)現(xiàn)的——Originator 和 Caretaker。發(fā)起者是需要保存和恢復(fù)狀態(tài)的對(duì)象,它使用內(nèi)部類來保存對(duì)象的狀態(tài)。內(nèi)部類稱為 Memento,它是私有的,因此不能從其他對(duì)象訪問。

其他設(shè)計(jì)模式

有很多設(shè)計(jì)模式不屬于 GoF 設(shè)計(jì)模式。讓我們看看其中一些流行的設(shè)計(jì)模式。

1. DAO 設(shè)計(jì)模式

DAO 設(shè)計(jì)模式用于將數(shù)據(jù)持久化邏輯解耦到一個(gè)單獨(dú)的層。當(dāng)我們?cè)O(shè)計(jì)系統(tǒng)以使用數(shù)據(jù)庫時(shí),DAO 是一種非常流行的模式。這個(gè)想法是將服務(wù)層與數(shù)據(jù)訪問層分開。這樣我們就在我們的應(yīng)用程序中實(shí)現(xiàn)了邏輯的分離。

查看DAO 模式以獲取完整的詳細(xì)信息和示例程序。

2. 依賴注入模式

依賴注入允許我們移除硬編碼的依賴,并使我們的應(yīng)用程序松散耦合、可擴(kuò)展和可維護(hù)。我們可以在 java 中實(shí)現(xiàn)依賴注入,將依賴解析從編譯時(shí)轉(zhuǎn)移到運(yùn)行時(shí)。Spring 框架建立在依賴注入的原則之上。

閱讀有關(guān)依賴注入模式的更多信息,以了解如何在我們的 Java 應(yīng)用程序中實(shí)現(xiàn)它。

3.MVC 模式

MVC 模式是用于創(chuàng)建 Web 應(yīng)用程序的最古老的架構(gòu)模式之一。MVC 代表模型-視圖-控制器。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 97色噜噜刺激有声小说 | 中文字幕22页| 国产大片免费在线观看 | 中文字幕亚洲精品 | 成人影院在线观看视频 | 91精品欧美激情在线播放 | 成年人免费视频网站 | 日韩在线视频观看 | 一二三四在线视频播放社区 | 精精国产www视频在线观看免费 | 狠狠干夜夜爱 | xxxx日本性 | 特级夫妻大片免费在线播放 | videos欧美黑白爆交 | 黄色a一级片 | www国产永久免费视频看看 | 激性欧美激情在线aa | 男女在线无遮挡毛片免费 | xxxxx.日本| 欧美第一精品 | 欧美综合自拍亚洲综合 | 夜夜cao | 国产制服| 青青草在视线频久久 | 欧美色成人 | 伊人天天躁夜夜躁狠狠 | www.激情网.com| 欧美午夜艳片欧美精品 | 午夜私人影院在线观看 | 伊人久久天堂 | aⅴ在线免费观看 | 一级毛片aa高清免费观看 | 免费看国产精品久久久久 | 蜜桃社极品尤物大尺度美女 | 国产全黄三级播放 | 国产成人福利 | 九月婷婷人人澡人人添人人爽 | 日韩福利视频一区 | 精品一区二区三区中文 | 日韩黄色三级 | 综综综综合网 |