二十三种设计模式
簡單工廠模式
先抽象定義一個“人”類,針對不同的職業的人都擁有的共同屬性,具體到某一個人時,就再去管理他的個性屬性。
工廠方法模式
因為簡單工廠模式中所有的產品都是由一個工廠創建的,如果再想添加新產品就需要修改工廠的代碼,違背了開閉原則,因此,在工廠方法中,多添加一個抽象的工廠類,具體功能的工廠再去特殊實現。
抽象工廠模式
實際生活中,一個工廠常常不止只生產一種產品,而工廠方法中也具有唯一性,所以使用抽象工廠模式,創建分屬于不同產品等級中的產品。
建造者模式
比如說一輛汽車,是由許多零部件組成的,組成的過程由建造類負責,客戶端類只接受一輛汽車,而不管具體的內部結構。
原型模式
系統中有時候有需要多次使用的對象,這時候只需創建一個對象,復制出多個相同的對象。復制時有深克隆與淺克隆,淺克隆就像快捷方式,深克隆就像復制粘貼。
單例模式
一個人只有一個身份證號碼,Windows也只能同事打開一個任務管理器,單例模式就是保證這種只能出現一個的“主鍵”不重復出現。
適配器模式
如其名,適配器模式就像電源適配器一樣,是將三孔插頭轉換為筆記本所接受的圓孔插口的類。
橋接模式
提供了不同元素組合起來的接口,比如,筆類有鋼筆和鉛筆兩個子類,顏色類有黑色白色兩個子類,可以組成黑色鉛筆,白色鉛筆,黑色鋼筆,白色鋼筆。
組合模式
是一個樹形結構,葉子節點也可以是一個樹形結構,有點像遞歸。比如文件夾下有文件和文件夾,如此反復。
裝飾模式
合成復用原則教導我們說,要多用關聯,少用繼承,于是裝飾模式中使用了一個裝飾類,具體的裝飾作為裝飾類的子類,裝飾類與具體的構件關聯,這樣添加具體的裝飾時,不會影響構件。
外觀模式
將具體的實現封裝起來,只把接口呈現出來,比如燈的開關,只有一個開關,具體的接線在墻里。
享元模式
系統的對象數目可能會非常龐大,有一些對象很相似或者相同,享元模式提供了一個共享池。
代理模式
當一個對象不和另一個對象進行交互時,引入“代理”的第三者來實現間接引用。類似我們買東西時,我們不去生產商處買,而在商店里購買。
職責鏈模式
職責鏈模式的是某個程序向系統申請資源的過程。為了避免多個對象都接收請求,將這些對象鏈接成一條鏈,沿著這條鏈傳遞請求。
命令模式
在職責鏈模式中,避免請求者和接收者耦合,但是沒有實現他們的完全解耦,而命令模式就是實現了這個部分。將請求進行封裝,可以封裝上接受者的相關信息和其他信息,同時可以支持撤銷的操作。
解釋器模式
通過制作一個“解釋器”來識別和處理那些出現率特別高的語句。
迭代器模式
外部對象實現對一個聚合對象的遍歷的同時不暴露其具體的內部結構。利用抽象迭代器和具體迭代器、抽象聚合類和具體聚合類,實現存儲數據和遍歷數據這兩個功能,方便了聚合對象的操作。
中介者模式
中介者模式有點類似于代理模式的感覺,都是通過一個對象來實現其他兩個對象的交互。在此模式中,使各對象可以獨立地改變他們之間的交互,而不一直受其他或更多對象的影響。
備忘錄模式
“撤銷”功能。一個備忘錄記錄上一步操作,用戶撤銷時就說加載備忘錄內的記錄。
觀察者模式
這個聽起來很像代理模式或者中介者模式,但是又有所不同。觀察者模式,建立了對象的依賴關系,一個對象發生改變的時候,觀察者通過類似廣播的形式來告知其他對象。
狀態模式
比如等紅綠燈的時候,顏色的變化。為了不在變化顏色時修改整個類,用狀態模式只修改它的狀態。
策略模式
對不同的事務有不同的解決方案。策略模式就可以使得系統靈活的選擇解決途徑,也可以方便的添加新的解決途徑。
模板方法模式
模板方法基于代碼的復用,將相同的代碼放在父類中,具體實現不同的子類。
訪問者模式
而訪問者模式就是針對不同的對象權限給出不同的內容。在不改變各元素的類的前提下定義作用于這些元素的新操作。
轉載于:https://www.cnblogs.com/a1264393659/p/6672525.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: UVa 11374 机场快线
- 下一篇: JAVA Spring 简单的配置和操作