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

軟件設(shè)計(jì)原則

  1. 開閉原則:軟件實(shí)體應(yīng)當(dāng)對擴(kuò)展開放畏铆,對修改關(guān)閉
  2. 里氏替換原則:子類可以擴(kuò)展父類的功能,但不能改變父類原有的功能欢嘿。也就是說:子類繼承父類時(shí)晃跺,除添加新的方法完成新增功能外揩局,盡量不要重寫父類的方法。
  3. 依賴倒置原則:高層模塊不應(yīng)該依賴低層模塊掀虎,兩者都應(yīng)該依賴其抽象凌盯;抽象不應(yīng)該依賴細(xì)節(jié)付枫,細(xì)節(jié)應(yīng)該依賴抽象;其核心思想是:要面向接口編程驰怎,不要面向?qū)崿F(xiàn)編程阐滩。
  4. 單一職責(zé)原則:規(guī)定一個(gè)類應(yīng)該有且僅有一個(gè)引起它變化的原因,否則類應(yīng)該被拆分
  5. 接口隔離原則:要為各個(gè)類建立它們需要的專用接口县忌,而不要試圖去建立一個(gè)很龐大的接口供所有依賴它的類去調(diào)用
  6. 迪米特法則: 如果兩個(gè)軟件實(shí)體無須直接通信掂榔,那么就不應(yīng)當(dāng)發(fā)生直接的相互調(diào)用,可以通過第三方轉(zhuǎn)發(fā)該調(diào)用症杏。
  7. 合成復(fù)用原則:它要求在軟件復(fù)用時(shí)装获,要盡量先使用組合或者聚合等關(guān)聯(lián)關(guān)系來實(shí)現(xiàn),其次才考慮使用繼承關(guān)系來實(shí)現(xiàn)

創(chuàng)建型模式

  1. 單例(Singleton)模式:某個(gè)類只能生成一個(gè)實(shí)例厉颤,該類提供了一個(gè)全局訪問點(diǎn)供外部獲取該實(shí)例穴豫,其拓展是有限多例模式。
  2. 原型(Prototype)模式:將一個(gè)對象作為原型逼友,通過對其進(jìn)行復(fù)制而克隆出多個(gè)和原型類似的新實(shí)例精肃。
  3. 工廠方法(FactoryMethod)模式:定義一個(gè)用于創(chuàng)建產(chǎn)品的接口,由子類決定生產(chǎn)什么產(chǎn)品翁逞。
  4. 抽象工廠(AbstractFactory)模式:提供一個(gè)創(chuàng)建產(chǎn)品族的接口肋杖,其每個(gè)子類可以生產(chǎn)一系列相關(guān)的產(chǎn)品溉仑。
  5. 建造者(Builder)模式:將一個(gè)復(fù)雜對象分解成多個(gè)相對簡單的部分挖函,然后根據(jù)不同需要分別創(chuàng)建它們,最后構(gòu)建成該復(fù)雜對象浊竟。

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

1.代理(Proxy)模式:為某對象提供一種代理以控制對該對象的訪問怨喘。即客戶端通過代理間接地訪問該對象,從而限制振定、增強(qiáng)或修改該對象的一些特性必怜。
2.適配器(Adapter)模式:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口,使得原本由于接口不兼容而不能一起工作的那些類能一起工作后频。
3.橋接(Bridge)模式:將抽象與實(shí)現(xiàn)分離梳庆,使它們可以獨(dú)立變化。它是用組合關(guān)系代替繼承關(guān)系來實(shí)現(xiàn)的卑惜,從而降低了抽象和實(shí)現(xiàn)這兩個(gè)可變維度的耦合度膏执。
4.裝飾(Decorator)模式:動(dòng)態(tài)地給對象增加一些職責(zé),即增加其額外的功能露久。
5.外觀(Facade)模式:為多個(gè)復(fù)雜的子系統(tǒng)提供一個(gè)一致的接口更米,使這些子系統(tǒng)更加容易被訪問。
6.享元(Flyweight)模式:運(yùn)用共享技術(shù)來有效地支持大量細(xì)粒度對象的復(fù)用毫痕。
7.組合(Composite)模式:將對象組合成樹狀層次結(jié)構(gòu)征峦,使用戶對單個(gè)對象和組合對象具有一致的訪問性迟几。

行為型模式

  1. 模板方法(Template Method)模式:定義一個(gè)操作中的算法骨架,將算法的一些步驟延遲到子類中栏笆,使得子類在可以不改變該算法結(jié)構(gòu)的情況下重定義該算法的某些特定步驟类腮。
  2. 策略(Strategy)模式:定義了一系列算法,并將每個(gè)算法封裝起來蛉加,使它們可以相互替換存哲,且算法的改變不會(huì)影響使用算法的客戶。
  3. 命令(Command)模式:將一個(gè)請求封裝為一個(gè)對象七婴,使發(fā)出請求的責(zé)任和執(zhí)行請求的責(zé)任分割開祟偷。
  4. 職責(zé)鏈(Chain of Responsibility)模式:把請求從鏈中的一個(gè)對象傳到下一個(gè)對象,直到請求被響應(yīng)為止打厘。通過這種方式去除對象之間的耦合修肠。
  5. 狀態(tài)(State)模式:允許一個(gè)對象在其內(nèi)部狀態(tài)發(fā)生改變時(shí)改變其行為能力。
  6. 觀察者(Observer)模式:多個(gè)對象間存在一對多關(guān)系户盯,當(dāng)一個(gè)對象發(fā)生改變時(shí)嵌施,把這種改變通知給其他多個(gè)對象,從而影響其他對象的行為莽鸭。
  7. 中介者(Mediator)模式:定義一個(gè)中介對象來簡化原有對象之間的交互關(guān)系吗伤,降低系統(tǒng)中對象間的耦合度,使原有對象之間不必相互了解硫眨。
  8. 迭代器(Iterator)模式:提供一種方法來順序訪問聚合對象中的一系列數(shù)據(jù)足淆,而不暴露聚合對象的內(nèi)部表示。
  9. 訪問者(Visitor)模式:在不改變集合元素的前提下礁阁,為一個(gè)集合中的每個(gè)元素提供多種訪問方式巧号,即每個(gè)元素有多個(gè)訪問者對象訪問。
  10. 備忘錄(Memento)模式:在不破壞封裝性的前提下姥闭,獲取并保存一個(gè)對象的內(nèi)部狀態(tài)丹鸿,以便以后恢復(fù)它。
  11. 解釋器(Interpreter)模式:提供如何定義語言的文法棚品,以及對語言句子的解釋方法靠欢,即解釋器。

參考地址:軟件設(shè)計(jì)模式概述

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铜跑,一起剝皮案震驚了整個(gè)濱河市门怪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疼进,老刑警劉巖薪缆,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡拣帽,警方通過查閱死者的電腦和手機(jī)疼电,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來减拭,“玉大人蔽豺,你說我怎么就攤上這事∨》啵” “怎么了修陡?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長可霎。 經(jīng)常有香客問我魄鸦,道長,這世上最難降的妖魔是什么癣朗? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任拾因,我火速辦了婚禮,結(jié)果婚禮上旷余,老公的妹妹穿的比我還像新娘绢记。我一直安慰自己,他們只是感情好正卧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布蠢熄。 她就那樣靜靜地躺著,像睡著了一般炉旷。 火紅的嫁衣襯著肌膚如雪签孔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天砾跃,我揣著相機(jī)與錄音骏啰,去河邊找鬼。 笑死抽高,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的透绩。 我是一名探鬼主播翘骂,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼帚豪!你這毒婦竟也來了碳竟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤狸臣,失蹤者是張志新(化名)和其女友劉穎莹桅,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烛亦,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诈泼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年懂拾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铐达。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岖赋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瓮孙,到底是詐尸還是另有隱情唐断,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布杭抠,位于F島的核電站脸甘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏偏灿。R本人自食惡果不足惜斤程,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望菩混。 院中可真熱鬧忿墅,春花似錦、人聲如沸沮峡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邢疙。三九已至棍弄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疟游,已是汗流浹背呼畸。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颁虐,地道東北人蛮原。 一個(gè)月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像另绩,于是被迫代替她去往敵國和親儒陨。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355