成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java設(shè)計模式概述

leon / 479人閱讀

摘要:設(shè)計模式的類別設(shè)計模式一共分為種類型,共種。屬于結(jié)構(gòu)型的設(shè)計模式適配器模式橋接模式裝飾模式組合模式外觀模式享元模式代理模式。問題描述了應(yīng)該在何時使用設(shè)計模式。解決方案描述了設(shè)計的組成成分,它們之間的相互關(guān)系及各自的職責(zé)和協(xié)作方式。

設(shè)計模式概述 1. 設(shè)計模式是什么

我們在平時編寫代碼的過程中,會遇到各種各樣的問題,細(xì)想一下很多問題的解決思路大致一樣的,這時候你就可以把解決問題的思路整理清晰,成為一種解決問題的核心模式,以后你就能使用這種模式解決類似的問題,而不必絞盡腦汁尋找最優(yōu)解決方案。經(jīng)過多年各路大牛的貢獻(xiàn)和實(shí)踐,形成了一套系統(tǒng)的軟件設(shè)計模式。

設(shè)計模式是軟件工程的基石脈絡(luò),如同大廈的結(jié)構(gòu)一樣。之所以使用設(shè)計模式,根本原因是為了代碼復(fù)用,增加可維護(hù)性。

2. 設(shè)計模式的類別

設(shè)計模式一共分為3種類型,共23種。

1)創(chuàng)建型模式:創(chuàng)建型模式抽象了實(shí)例化過程。他們幫助一個系統(tǒng)獨(dú)立于如何創(chuàng)建、組合和表示他的對象。

屬于創(chuàng)建型的設(shè)計模式:

單例模式(Singleton)、抽象工廠模式(Abstract Factory)、工廠模式(Factory Method)、建造者模式(Builder)、原型模式(Prototype)。

2)結(jié)構(gòu)型模式:結(jié)構(gòu)型模式涉及到如何組合類和對象以畫的更大的結(jié)構(gòu),結(jié)構(gòu)型模式采用繼承或組合機(jī)制來組合接口或?qū)崿F(xiàn)。

屬于結(jié)構(gòu)型的設(shè)計模式:

適配器模式(Adapter)、橋接模式(Bridge)、裝飾模式(Decorator)、組合模式(Composite)、外觀模式(Facade)、享元模式(Flyweight)、代理模式(Proxy)。

3)行為型模式:行為模式設(shè)計到算法和對象間職責(zé)的分配。

屬于行為型的設(shè)計模式:

模塊方法模式(Template Method)、命令模式(Command)、迭代器模式(Iterator)、觀察者模式(Observer)、中介者模式(Mediator)、備忘錄模式(Memento)、解釋器模式(Interpreter)、狀態(tài)模式(State)、策略模式(Strategy)、職責(zé)鏈模式(Chain of Responsibility)、訪問者模式(Visitor)。

學(xué)習(xí)任何一種設(shè)計模式都要從以下4點(diǎn)入手:

A.模式名稱:一個助記名,他用一兩個詞來描述模式的問題、解決方案和效果。

B.問題:描述了應(yīng)該在何時使用設(shè)計模式。

C.解決方案:描述了設(shè)計的組成成分,它們之間的相互關(guān)系及各自的職責(zé)和協(xié)作方式。

D.效果:描述了模式的應(yīng)用效果及使用模式應(yīng)權(quán)衡的問題。

3. 設(shè)計模式的意圖

每種設(shè)計模式都致力于解決一種問題,以下表格列舉了這些設(shè)計模式的作用。

設(shè)計模式 意圖/作用
創(chuàng)建型模式
單例模式 保證一個類僅有一個實(shí)例,并提供一個訪問它的全局訪問點(diǎn)。
抽象工廠模式 提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定他們具體的類。
工廠模式 定義一個用于創(chuàng)建對象的接口,讓子類決定實(shí)例化哪一個類,工廠模式使用一個類的實(shí)例化延遲到其子類。
建造者模式 將一個復(fù)雜對象的構(gòu)建與他的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。
原型模式 用原型實(shí)例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。
結(jié)構(gòu)型模式
適配器模式 將一個類的接口轉(zhuǎn)化成客戶需要的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。
組合模式 將對象組合成樹型結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。Composite使得用戶對單個對象和組合對象的使用具有一致性。
代理模式 為其他對象那提供一種代理以控制對這個對象的訪問。
橋接模式 將抽象部分和實(shí)現(xiàn)部分分離,使他們都可以獨(dú)立的變化。
裝飾模式 動態(tài)的給一個對象添加一些額外的職責(zé)。就增加功能來說,Decorator模式相比生成子類更為靈活。
外觀模式 為子系統(tǒng)的一組接口提供一個一致的界面,F(xiàn)acade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。
享元模式 運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象。
行為模式
觀察者模式 定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。
中介者模式 用一個中介對象來封裝一系列的對象交互。中介者使各種對象不需要顯式地互相引用,從而使其耦合松散,而且可以獨(dú)立地改變他們之間的交互。
職責(zé)鏈模式 使多個對象都有機(jī)會處理請求,從而避免請求的發(fā)送者和接收者之間的耦合關(guān)系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到一個對象處理他為止。
命令模式 將一個請求封裝成一個對象,從而使你可用不同的請求對客戶進(jìn)行參數(shù)化;對請求排隊(duì)或記錄請求日志,以及支持可撤銷的操作。
解釋器模式 給定一個語言,定義它的語法的一種表示,并定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。
迭代器模式 提供一種方法順序訪問聚合對象中各個元素,而不需暴露該對象的內(nèi)部表示。
備忘錄模式 在不破壞封裝的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)。
狀態(tài)模式 允許一個對象在其內(nèi)部狀態(tài)改變時改變它的行為。對象看起來似乎修改了它的種類。
策略模式 定義一系列的算法將他們一個個的封裝起來,并且使他們可相互替換。本模式使得算法可獨(dú)立于使用它的客戶而變化。
模板方法模式 定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。TemplateMethod使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。
訪問者模式 表示一個作用于某對象結(jié)構(gòu)中的各元素的操作。它使得你可以在不改變各元素的類的前提下定義作用于這些元素的新操作。

如果多的設(shè)計模式,初學(xué)者必須都要掌握,只需要掌握比較常用的幾種:

創(chuàng)新型模式:單例模式、抽象工廠模式、建造者模式、工廠模式。

結(jié)構(gòu)型模式:適配器模式、組合模式、代理模式。

行為型模式:觀察者模式、中介者模式。

以上就是23種設(shè)計模式的概述,學(xué)習(xí)之路任重而道遠(yuǎn)啊!

4. 設(shè)計原則

除了設(shè)計模式,也需要了解一下設(shè)計原則,這里給出一些設(shè)計原則的基本介紹。

開閉原則:

開閉原則具有理想主義的色彩,它是面向?qū)ο笤O(shè)計的終極目標(biāo)。

模塊應(yīng)對擴(kuò)展開放,對修改關(guān)閉,模塊應(yīng)該在不修改源碼的情況下進(jìn)行擴(kuò)展。

里氏代換原則:

如果調(diào)用的是父類的話,那么換成子類也完全可以運(yùn)行。

Java編譯程序會檢查程序是否符合里氏代換原則。還記得java繼承的一個原則嗎?子類override方法的訪問權(quán)限不能小于父類對應(yīng)方法的訪問權(quán)限。里氏代換原則是繼承復(fù)用的一個基礎(chǔ)。

依賴倒序原則:

所謂依賴倒序原則是要依賴于抽象,不要依賴于具體。簡單的說就是要求對抽象進(jìn)行編程,不要對實(shí)現(xiàn)進(jìn)行編程,這樣就降低了實(shí)現(xiàn)與客戶之間的耦合。傳遞參數(shù),或在組合聚合關(guān)系中,盡量引用層次高的類

接口隔離原則:

使用專門的接口比使用單一的總接口要好;

一個類對另一個類的依賴應(yīng)該建立在最小的接口上;

一個接口代表一個角色,不應(yīng)該將不用的角色交給一個接口。沒有關(guān)系的接口合并在一起形成一個臃腫的大接口,這是對角色和接口的污染;

不要強(qiáng)迫客戶使用它們不用的方法,如果強(qiáng)迫客戶使用它們不用的方法,那么這些客戶就會面臨這些不使用的方法的改變而帶來的改變。

合成/聚合復(fù)用原則:

合成/聚合復(fù)用原則就是在一個新的對象里面使用一些已有的對象,使之成為新對象的一部分;新的對象通過向這些對象的委派達(dá)到復(fù)用已有功能的目的。它的設(shè)計原則是:要盡量使用合成/聚合,盡量不要使用繼承。

就是說要少用繼承,多用組合關(guān)系來實(shí)現(xiàn)。否則修改父類的一個方法,各個子類都需要改動?!盃恳话l(fā)而動全身”!面向?qū)ο笫且巡▌酉拗圃诒M量小的范圍。

最小知識原則(迪米特法則):

也叫迪米特法則。不要和陌生人說話,即一個對象應(yīng)對其他對象有盡可能少的了解。迪米特法則的初衷是為了降低類之間的耦合,每個類盡量減少對其他類的依賴,這樣系統(tǒng)的功能模塊才更容易獨(dú)立。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68890.html

相關(guān)文章

  • Java包的基本概述

    摘要:第七章包的基本概述起因在我們設(shè)計一個程序的時候尤其是多人合作,會寫一些類來實(shí)現(xiàn)功能,但是往往會有重名的現(xiàn)象發(fā)生,為了解決這個問題,則專門設(shè)計了包。概念為了更好地組織類,提供了包機(jī)制,用于區(qū)別類名的命名空間。 第七章 7.1 包的基本概述 起因: 在我們設(shè)計一個程序的時候(尤其是多人合作),會寫一些類來實(shí)現(xiàn)功能,但是往往會有重名的現(xiàn)象發(fā)生,為了解決這個問題,則專門設(shè)計了包。(還有其他作用...

    Baaaan 評論0 收藏0
  • Java性能調(diào)優(yōu)概述

    摘要:性能調(diào)優(yōu)概述性能優(yōu)化有風(fēng)險和弊端,性能調(diào)優(yōu)必須有明確的目標(biāo),不要為了調(diào)優(yōu)而調(diào)優(yōu)盲目調(diào)優(yōu),風(fēng)險遠(yuǎn)大于收益程序性能的主要表現(xiàn)點(diǎn)執(zhí)行速度程序的反映是否迅速,響應(yīng)時間是否足夠短內(nèi)存分配內(nèi)存分配是否合理,是否過多地消耗內(nèi)存或者存在內(nèi)存泄漏啟動時間程序 [TOC] Java性能調(diào)優(yōu)概述 性能優(yōu)化有風(fēng)險和弊端,性能調(diào)優(yōu)必須有明確的目標(biāo),不要為了調(diào)優(yōu)而調(diào)優(yōu)?。?!盲目調(diào)優(yōu),風(fēng)險遠(yuǎn)大于收益?。。?程序性...

    ad6623 評論0 收藏0
  • Java多線程進(jìn)階(一)—— J.U.C并發(fā)包概述

    摘要:整個包,按照功能可以大致劃分如下鎖框架原子類框架同步器框架集合框架執(zhí)行器框架本系列將按上述順序分析,分析所基于的源碼為。后,根據(jù)一系列常見的多線程設(shè)計模式,設(shè)計了并發(fā)包,其中包下提供了一系列基礎(chǔ)的鎖工具,用以對等進(jìn)行補(bǔ)充增強(qiáng)。 showImg(https://segmentfault.com/img/remote/1460000016012623); 本文首發(fā)于一世流云專欄:https...

    anonymoussf 評論0 收藏0
  • Java設(shè)計模式0】概述

    占坑有空寫

    antz 評論0 收藏0
  • 第八章-Java常用API#yyds干貨盤點(diǎn)#

    摘要:常用類概述包含執(zhí)行基本數(shù)字運(yùn)算的方法沒有構(gòu)造方法,如何使用類中的成員呢看類的成員是否都是靜態(tài)的,如果是,通過類名就可以直接調(diào)用。所有類都直接或間接的繼承該類。 1 常用API1.1 Math1.1.1 Math類概述Math包含執(zhí)行基本數(shù)字運(yùn)算的方法沒有構(gòu)造方法,如何使用類中的成員呢?看類的成員是否都是靜態(tài)的,...

    番茄西紅柿 評論0 收藏2637

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<