PHP - 23種設計模式(一)

介紹+分類+設計模式原則

一、 Introduction【介紹】

設計模式:提供了一種廣泛的可重用的方式來解決我們?nèi)粘>幊讨谐3S鲆姷膯栴}蓄坏。設計模式并不一定就是一個類庫或者第三方框架曼追,它們更多的表現(xiàn)為一種思想并且廣泛地應用在系統(tǒng)中。它們也表現(xiàn)為一種模式或者模板将硝,可以在多個不同的場景下用于解決問題。設計模式可以用于加速開發(fā)屏镊,并且將很多大的想法或者設計以一種簡單地方式實現(xiàn)依疼。當然,雖然設計模式在開發(fā)中很有作用而芥,但是千萬要避免在不適當?shù)膱鼍罢`用它們律罢。

二、 Category【分類】

根據(jù)目的和范圍棍丐,設計模式可以分為五類误辑。

按照目的分為:創(chuàng)建設計模式,結構設計模式歌逢,以及行為設計模式巾钉。

按照范圍分為:類的設計模式,以及對象設計模式秘案。

1. 按照目的分砰苍,目前常見的設計模式主要有23種,根據(jù)使用目標的不同可以分為以下三大類:

創(chuàng)建設計模式(Creational Patterns)(5種):用于創(chuàng)建對象時的設計模式阱高。更具體一點赚导,初始化對象流程的設計模式。當程序日益復雜時赤惊,需要更加靈活地創(chuàng)建對象吼旧,同時減少創(chuàng)建時的依賴。而創(chuàng)建設計模式就是解決此問題的一類設計模式未舟。

單例模式【Singleton】

工廠模式【Factory】

抽象工廠模式【AbstractFactory】

建造者模式【Builder】

原型模式【Prototype】

結構設計模式(Structural Patterns)(7種):用于繼承和接口時的設計模式圈暗。結構設計模式用于新類的函數(shù)方法設計,減少不必要的類定義裕膀,減少代碼的冗余厂置。

適配器模式【Adapter】

橋接模式【Bridge】

合成模式【Composite】

裝飾器模式【Decorator】

門面模式【Facade】

代理模式【Proxy】

享元模式【Flyweight】

行為模式(Behavioral Patterns)(11種):用于方法實現(xiàn)以及對應算法的設計模式,同時也是最復雜的設計模式魂角。行為設計模式不僅僅用于定義類的函數(shù)行為昵济,同時也用于不同類之間的協(xié)議、通信。

策略模式【Strategy】

模板方法模式【TemplateMethod】

觀察者模式【Observer】

迭代器模式【Iterator】

責任鏈模式【ResponsibilityChain】

命令模式【Command】

備忘錄模式【Memento】

狀態(tài)模式【State】

訪問者模式【Visitor】

中介者模式【Mediator】

解釋器模式【Interpreter】

2.按照范圍分為:類的設計模式访忿,以及對象設計模式

類的設計模式(Class patterns):用于類的具體實現(xiàn)的設計模式瞧栗。包含了如何設計和定義類,以及父類和子類的設計模式海铆。

對象設計模式(Object patterns): 用于對象的設計模式迹恐。與類的設計模式不同,對象設計模式主要用于運行期對象的狀態(tài)改變卧斟、動態(tài)行為變更等殴边。

三、 DesignPatternsPrinciple【設計模式原則】

設計模式六大原則

開放封閉原則:一個軟件實體如類珍语、模塊和函數(shù)應該對擴展開放锤岸,對修改關閉。

里氏替換原則:所有引用基類的地方必須能透明地使用其子類的對象.

依賴倒置原則:高層模塊不應該依賴低層模塊板乙,二者都應該依賴其抽象是偷;抽象不應該依賴細節(jié);細節(jié)應該依賴抽象募逞。

單一職責原則:不要存在多于一個導致類變更的原因蛋铆。通俗的說,即一個類只負責一項職責放接。

接口隔離原則:客戶端不應該依賴它不需要的接口刺啦;一個類對另一個類的依賴應該建立在最小的接口上。

迪米特法則:一個對象應該對其他對象保持最少的了解纠脾。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洪燥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乳乌,更是在濱河造成了極大的恐慌,老刑警劉巖市咆,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汉操,死亡現(xiàn)場離奇詭異,居然都是意外死亡蒙兰,警方通過查閱死者的電腦和手機磷瘤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搜变,“玉大人采缚,你說我怎么就攤上這事∧铀” “怎么了扳抽?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我贸呢,道長镰烧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任楞陷,我火速辦了婚禮怔鳖,結果婚禮上,老公的妹妹穿的比我還像新娘固蛾。我一直安慰自己结执,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布艾凯。 她就那樣靜靜地躺著献幔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪览芳。 梳的紋絲不亂的頭發(fā)上斜姥,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音沧竟,去河邊找鬼铸敏。 笑死,一個胖子當著我的面吹牛悟泵,可吹牛的內(nèi)容都是我干的杈笔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼糕非,長吁一口氣:“原來是場噩夢啊……” “哼蒙具!你這毒婦竟也來了?” 一聲冷哼從身側響起朽肥,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤禁筏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后衡招,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篱昔,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年始腾,在試婚紗的時候發(fā)現(xiàn)自己被綠了州刽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡浪箭,死狀恐怖穗椅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奶栖,我是刑警寧澤匹表,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布门坷,位于F島的核電站,受9級特大地震影響桑孩,放射性物質(zhì)發(fā)生泄漏拜鹤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一流椒、第九天 我趴在偏房一處隱蔽的房頂上張望敏簿。 院中可真熱鬧,春花似錦宣虾、人聲如沸惯裕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜻势。三九已至,卻和暖如春鹉胖,著一層夾襖步出監(jiān)牢的瞬間握玛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工甫菠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挠铲,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓寂诱,卻偏偏與公主長得像拂苹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子痰洒,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容