常用的設計模式總結
常用的設計模式總結
1.策略模式(Strategy): 定義了算法家族, 分別封裝起來(lái), 讓它們之間可以互相替換.
比如Collections.sort(List list, Comparator c); 可以通過(guò)實(shí)現多個(gè)Comparator接口來(lái)達到多種排序的目的.
2.裝飾著(zhù)模式(Decorator): 動(dòng)態(tài)的給一個(gè)對象添加一些額外的職責.
比如java.io包. BufferedInputStream封裝了FileInputStream, 它們都實(shí)現了InputStream接口, 但前者實(shí)現了readLine方法.
3.代理模式(Proxy): 為其他對象提供一種代理以控制對這個(gè)對象的訪(fǎng)問(wèn).
比如在用戶(hù)登錄時(shí), 真正的登錄類(lèi)和代理登錄類(lèi)都實(shí)現了Login接口, 不同的是Proxy類(lèi)的方法中增加了用戶(hù)是否合法的判斷, 只有合法時(shí)才去調用真正登錄類(lèi)的login方法. 用戶(hù)訪(fǎng)問(wèn)的其實(shí)是Proxy的login方法.
4.工廠(chǎng)模式(Factory): 定義一個(gè)用以創(chuàng )建對象的接口, 讓子類(lèi)決定實(shí)例化哪個(gè)類(lèi).
當遇到需要根據某個(gè)前提條件創(chuàng )建不同的類(lèi)實(shí)現時(shí), 會(huì )實(shí)用工廠(chǎng)模式.
5.模板模式(Template): 定義一個(gè)操作中的算法骨架, 而將一些步驟延遲到子類(lèi)中.
比如HibernateTemplate, 在Template中已經(jīng)定義了Connection開(kāi)關(guān)的實(shí)現, 用戶(hù)只需要在子類(lèi)中根據不同的業(yè)務(wù)寫(xiě)不同的sql.
6.外觀(guān)模式(Facade): 為子系統中的一組接口提供一個(gè)一致的界面.
一直在用, 比如DBUtil, 將所有數據庫對象封裝了, 只留了DBUtil.getDBUtil()這個(gè)接口.
7.建造者模式(Builder): 將一個(gè)復雜對象的構建與它的表示分離.
8.觀(guān)察者模式(Observer): 定義了一種一對多的依賴(lài)關(guān)系,讓多個(gè)觀(guān)察者對象同時(shí)監聽(tīng)某一主題對象,在它的狀態(tài)發(fā)生變化時(shí),會(huì )通知所有的觀(guān)察者.
比如ServletContextListener, 在applcation啟動(dòng)時(shí), 會(huì )通知所有這個(gè)接口的實(shí)現類(lèi).
9.抽象工廠(chǎng)模式(Abstract Factory): 提供一個(gè)創(chuàng )建一系列相關(guān)或相互依賴(lài)對象的接口, 而無(wú)需指定它們具體的類(lèi).
10.適配器模式(Adapter): 將一個(gè)類(lèi)的接口轉換成客戶(hù)希望的另一個(gè)接口.
11.單例模式(Singleton): 保證一個(gè)類(lèi)僅有一個(gè)實(shí)例,并提供一個(gè)訪(fǎng)問(wèn)它的全局控制點(diǎn).
比如在加載配置文件時(shí), 可使用該模式.
12.命令模式(Command): 將一個(gè)請求封裝成為一個(gè)對象, 使可以用不同的請求對客戶(hù)進(jìn)行參數化.
比如Struts的MVC結構, 其實(shí)就是個(gè)Command模式.
【常用的設計模式總結】相關(guān)文章:
程序設計課堂教學(xué)模式探索論文03-20
高三地理復習課教學(xué)模式總結(精選15篇)04-09
常用導數公式總結09-24
最流行的平面設計方法總結11-22
常用的壓電材料分類(lèi)總結10-30
總結常用的數學(xué)算式等式04-22
《標牌設計》的教學(xué)設計03-14
課程設計總結范文(通用11篇)12-16
設計分層教學(xué)目標設計05-20