設計模式

創(chuàng)建型模式:

抽象工廠模式:提供一個創(chuàng)建一系列或相關依賴對象的接口催束,而無需指定它們具體的類梆暮。

建造者模式:將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創(chuàng)建不同的表示。

工廠方法模式:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類麻昼,工廠模式使一個類的實例化延遲到其子類。

簡單工廠模式:在工廠類中使用switch或者if……else判斷生產(chǎn)具體的產(chǎn)品馋辈,可以利用反射技術替換switch抚芦。

原型模式:用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。

單例模式:保證一個類僅有一個實例燕垃,并提供全局訪問的方法枢劝。關鍵點是類自身負責自己的實例化,構造方法私有卜壕。多線程訪問實例方法時,需要雙重鎖定烙常,即先進來看有沒有實例轴捎,若有則直接返回,若沒有蚕脏,需要加鎖侦副,若此時多個線程同時進入判斷中,則有可能需要在鎖代碼塊里再次判斷是否已經(jīng)實例化驼鞭。餓漢式秦驯,類變量聲明為靜態(tài)的在系統(tǒng)啟動時即進行實例化,這種方式需要占用系統(tǒng)資源挣棕。懶漢式译隘,需要編程控制實例的創(chuàng)建獲取。

結構型模式:

適配器模式:分為類適配器模式和對象適配器模式洛心。類適配器模式通過多重繼承實現(xiàn)固耘,多種語言不支持。主要是對象適配器模式词身。一個對象方法與需要定義的方法功能類似厅目,方法結構不同,采取適配器模式在適配器中設計與需要定義方法結構一致的方法法严,在方法中調用這個對象方法损敷。一般是適配第三方接口或者后期維護不方便重構代碼。

橋接模式(Bridge):將抽象部分與它的實現(xiàn)部分分離深啤,使它們都可以獨立地變化拗馒。

組合模式:需求體現(xiàn)整體與部分的層次,但是客戶端忽略這種關系墓塌,使用每一個對象時可以統(tǒng)一使用瘟忱。透明方式與安全方式,透明方式需要顯式聲明所有方法苫幢,安全模式不聲明有區(qū)別的方法访诱,需要客戶端判斷類型。

裝飾模式:動態(tài)地給一個對象添加一些額外的指責韩肝。就增加功能來說触菜,裝飾模式相比生成子類更加靈活。

外觀模式:為子系統(tǒng)中的一組接口提供一個一致的界面哀峻,外觀模式定義了一個高層接口涡相,這個接口使得這一子系統(tǒng)更加容易使用哲泊。

享元模式:運用共享技術有效支持大量細粒度的對象。將細粒度不同的數(shù)據(jù)轉移到實例之外保存催蝗,方法調用時切威,傳遞進來,通過共享大幅度減少單個實例個數(shù)丙号。

代理模式:為其它對象提供一種代理以控制對這個對象的訪問先朦。

行為型模式:

觀察者模式:定義對象間的一種一對多的依賴關系,當一個對象的狀態(tài)發(fā)生改變時犬缨,所有依賴于它的對象都得到通知并被自動更新喳魏。

模板模式:定義一個操作的算法骨架,而將一些步奏延遲到子類中怀薛,模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟刺彩。

命令模式:將一個請求封裝為一個對象,從而可對請求參數(shù)化枝恋,對請求排隊或者記錄日志创倔,以及支持可撤銷操作。

狀態(tài)模式:對于對象狀態(tài)的判斷邏輯太過復雜鼓择,將邏輯轉移到不同狀態(tài)的一系列類中三幻。

職責鏈模式:使多個對象都有機會處理請求,從而避免請求的發(fā)送者和接受者之間的耦合關系呐能。將這個對象連成一條鏈念搬,并沿著這條鏈傳遞該請求,直到有一個對象處理它為止摆出。

解釋器模式:給定一個語言朗徊,定義它的文法的一種表示,并定義一個解釋器偎漫,這個解釋器使用該表示來解釋語言中的句子爷恳。

中介者模式:用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用象踊,從而使其耦合松散温亲,而且可以獨立地改變它們之間的交互。

訪問者模式(Visitor):表示一個作用于某對象結構中的各元素的操作杯矩。它使你可以在不改變各元素的類的前提下定義作用于這些元素的新操作栈虚。

策略模式:定義一系列的算法,把它們一個個封裝起來史隆,并且使它們可相互替換魂务。本模式使得算法可獨立于使用它的客戶而變化。

備忘錄模式:在不破壞封裝的前提下,捕獲對象的內(nèi)部狀態(tài)粘姜,并在該對象之外保存鬓照,以便回復對象原有狀態(tài)。

迭代器模式:當有多種遍歷需要時孤紧,分離了集合對象的遍歷行為豺裆,抽象出一個迭代器,既可以不暴露集合結構坛芽,又可以訪問集合對象內(nèi)部數(shù)據(jù)留储。

開放-封閉原則:程序設計,對于更改時閉合的咙轩,對于擴展是開放的。

依賴倒轉原則:高層模塊不應該依賴底層模塊阴颖,二者都應該依賴抽象活喊。抽象不應該依賴細節(jié),細節(jié)應該依賴抽象量愧。面向接口編程钾菊。

單一指責原則:對象不應該承擔太多功能。引起對象變化的原因應該只有一種偎肃。

接口隔離原則:客戶端不應該依賴它不需要的接口煞烫,類間的依賴關系應該建立在最小的接口上。

李氏代換原則:子類應該可以替換父類并出現(xiàn)再父類能夠出現(xiàn)的地方累颂。

迪米特原則:最少知識原則滞详。如果兩個軟件實體無需直接通信,那么久不應當發(fā)生直接的相互調用紊馏,可以通過第三方轉發(fā)該調用料饥,使類之間的耦合度降低,提高模塊的相對獨立性朱监。

合成/聚合復用原則:盡量使用合成/聚合替換繼承岸啡。

敏捷開發(fā)原則:不要為代碼添加基于猜測的、實際不需要的功能赫编。

內(nèi)聚性與耦合性:內(nèi)聚性描述是一個例程內(nèi)部組成部分之間相互聯(lián)系的緊密程度巡蘸。耦合性描述的是一個例程與其他例程之間聯(lián)系的緊密程度。軟件開發(fā)的目標應該是創(chuàng)建這樣的例程:內(nèi)部完整擂送,也就是高內(nèi)聚悦荒,而與其他例程之間的聯(lián)系則是小巧、直接团甲、課件逾冬、靈活的,這就是松耦合(DPE)。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末身腻,一起剝皮案震驚了整個濱河市猛蔽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌足画,老刑警劉巖绳姨,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異她按,居然都是意外死亡牛隅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門酌泰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來媒佣,“玉大人,你說我怎么就攤上這事陵刹∧椋” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵衰琐,是天一觀的道長也糊。 經(jīng)常有香客問我,道長羡宙,這世上最難降的妖魔是什么狸剃? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮狗热,結果婚禮上钞馁,老公的妹妹穿的比我還像新娘。我一直安慰自己斗搞,他們只是感情好指攒,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著僻焚,像睡著了一般允悦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虑啤,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天隙弛,我揣著相機與錄音,去河邊找鬼狞山。 笑死全闷,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的萍启。 我是一名探鬼主播总珠,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼屏鳍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了局服?” 一聲冷哼從身側響起钓瞭,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淫奔,沒想到半個月后山涡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡唆迁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年鸭丛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唐责。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡鳞溉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鼠哥,到底是詐尸還是另有隱情穿挨,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布肴盏,位于F島的核電站,受9級特大地震影響帽衙,放射性物質發(fā)生泄漏菜皂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一厉萝、第九天 我趴在偏房一處隱蔽的房頂上張望恍飘。 院中可真熱鬧,春花似錦谴垫、人聲如沸章母。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乳怎。三九已至,卻和暖如春前弯,著一層夾襖步出監(jiān)牢的瞬間蚪缀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工恕出, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留询枚,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓浙巫,卻偏偏與公主長得像金蜀,于是被迫代替她去往敵國和親刷后。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349