各類主流框架及設計模式簡介


1,使用框架技術的優勢:
1)不用考慮公共問題,框架已經為我們做好了
2)可以專心在業務邏輯上,保證核心業務邏輯的開發質量
3)結構統一,便於學習,維護
4)最重要的一點:框架中集成了前人的經驗,可以幫助新手寫出穩健。性能優良而且結構優美的高質量程序;
2,什么是框架:
框架(Framework)是一個提供了可重用的公共結構的半成品。一方面提供了可以拿來就用的工具,也提供了可重用的設計;
框架使混亂的東西變得結構化;
框架是一組協同工作的組件;
3,java中的主流框架:
1)Struts框架;是MVC設計模式的體現。Struts定義了通用的Controller(控制器),通過配置文件(一般是struts.config.xml)隔離了Model(模型)和View(視圖),以Action的概念對用戶請求做了封裝,使代碼更清晰易讀。Struts還提供了自動將請求的數據填充到對象中及頁面標簽等簡化編碼的工具。
2)Struts2以webwork為內核,吸收了struts框架的核心,提供了更加簡潔的MVC設計模式實現的web應用程序框架。它引入了幾個新的框架特性:從邏輯中分離出橫切關注點的攔截器,減少或消除配置文件,貫穿整個框架的強大表達式語言,支持可變更和可重用的基於MVC模式的標簽API,Struts2充分利用了從其他MVC框架學到的經驗和教訓,是框架更加清晰,靈活;
Struts的優點;
1)最大的優點:開源;
2)實現了MVC模式,並有豐富的tag標簽可用;
3)通過一個配置文件,即可把握整個系統各部分之間的聯系,並提供Exception處理機制,數據庫連接池還支持I18N
4)Struts框架使開發者在構建基於Java Servlet和JSP技術的web應用時更加容易,並且提供了一個統一的標准框架;
缺點:
1)Struts的Action必須是線程安全的,它僅僅允許一個實例去處理所有的請求。所以Action用到的所有資源都必須統一同步,這就引起了線程安全問題;
2)Struts適用范圍有限,它是基於web的MVC解決方案,所以 必須用到HTML,JSP和Servlet來實現它;
Hidbernate框架:
java是面向對象的,而主流的數據庫是面向關系的數據庫表,Hibernate框架就是處理對象和數據庫表之間的轉換的問題的;
3)Hibernate是開源持久化的框架,負責簡化將對象數據保存到數據庫中或從數據庫中讀取數據並封裝到對象的工作。通過簡單配置和編碼即可替代JDBC繁瑣的程序代碼。
使程序員使用面向對象的編程思維來操作數據庫;
Hibernate可以應用到C/S或B/S結構中,Struts只能用在B/S程序;
4)Spring框架,是輕量級的框架,滲透了JavaEE 技術的各方面,它主要作為依賴注入容器和AOP,還提供了聲明式事物,對DAO層的支持等簡化開發的功能。Spring還可以和Struts,Struts2,Hibernate等技術集成;構成了比較流行的SSH架構;
Spring優點:
1)低侵入式設計,代碼污染極低;
2)獨立於各種應用服務器,可以真正實現 Write Once,Run Anywhere(一次編寫到處運行)
3)Spring的DI機制(依賴注入)降低了業務對象替換的復雜性;
4)Spring開發並不完全依賴於Spring所有組件,開發者可以自由選擇使用Spring框架的部分或全部組件;
SSH架構就是使用Spring部分組件,然后與Struts和Hibernate進行整合;
此外還有DWR框架(Ajax框架),jQuery框架等;
設計模式:是由四人幫設計的23種設計模式 ;
想讓程序具有某種特性,就借鑒某種模式即可;
模式:問題及解決方案共同的本質;
設計模式:是一套被反復使用,多數人知曉的,經過分類編目的,代碼設計經驗的總結;
框架和設計模式的區別:
1)構件是代碼重用,設計模式是設計重用,框架介於兩者之間,是部分代碼重用部分設計重用;
2)設計模式比框架更抽象:框架可以用代碼來表示,模式只有實例可以用代碼來表示;
3)設計模式是比框架更小的元素,一個框架可以包含多個設計模式;
4)框架針對某個特定的應用領域,解決某個問題,相當於一個軟件;同一個設計模式則適用於不同的應用;
模式包含的要素:
名字(可以有多個名字,但主要的名字應該只有一個,其他的應是別名),問題(描述了在何時使用模式),效果,解答(解決方案);
MVC:模型-視圖-控制器模式;是架構模式,不是設計模式;它是在合成模式,策略模式和觀察者模式的基礎上加一些別的東西組成的;
架構模式:一個架構模式描述軟件系統里的基本的結構組織或綱要。架構模式提供一些先定義好的子系統,指定他們的責任,並給出把他們組織在一起的法則和指南;
設計模式:一個設計模式提供一種提煉子系統或軟件系統中的組件或他們之間的關系的綱要設計。它描述普遍存在的在相互通訊的組件中重復出現的結構,這種結構解決在一定的背景中具有一般性的設計問題;
Model層:實現系統中業務邏輯,可用JavaBean或EJB來實現;
Controller層:Controller是位於model和view之間溝通的橋梁,使用servlet技術實現;
View層:用於與用戶交互,使用JSP實現;
Spring中涉及到的設計模式:
創建型模式:工廠模式是創建型模式的代表之一;
工廠模式;單例模式;模板方法模式;代理模式;策略模式;
1)簡單工廠模式:
簡單工廠模式不屬於23種標准設計模式;是工廠方法模式的一個特殊實現;
簡單工廠模式是由一個工廠類根據傳入的參數決定創建出哪一種產品類的實例;
簡單工廠模式就是由一個工廠類來創建出所有的產品類的實例;
缺點:如果產品過多,要新增一個產品時,就要對代碼進行改寫,不符合開閉原則;從而引入了工廠方法模式;

 抽象工廠模式:是為創建一組相關或依賴的對象提供創建接口;

工廠模式:是為一類對象提供創建接口或延遲對象的創建到子類中實現;

2)結構型模式:
2)代理模式(Proxy)是結構型模式的代表;處理對象間關系的模式;通過代理對象去解決真實對象的問題;(中介)
對於結構模型,它是用來處理對象該如何組織及采用什么樣的結構更加合理的問題;
代理模式的使用條件:
當對已有的方法進行使用時,需要對原有方法進行改進或修改,此時又兩種改進選擇:
1)修改原有方法來適應現在的使用方式;
2)使用一個’第三者‘方法來調用原有方法,並對方法產生的結果進行一定的控制;
第一種方法違背了“對擴展開放,對修改關閉”的開閉原則,第二種方法卻可以將功能划分的更清晰,有助於后面的維護,第二種就是代理模式,這就是它的適用條件;
3)行為型模式:規定了各個對象應該具備的職責及對象間的通信方式;規定了對象的調用方式和數據傳遞方式;
策略模式(Strategy):是典型的行為型設計模式;
適用條件:適合於算法經常變換的情況,例如定義一系列的算法,並分別封裝起來,讓它們之間相互替換,算法的變化不會影響到使用算法的客戶,算法可以獨立於使用它的客戶而變化;
適用於Bean對象的創建,及代理對象的創建;
4)單例模式:
單例模式確保某一個類只有一個 實例,而且自行實例化並向整個系統提供這個實例。這個類稱為單例類;
特點:
1)單例類只有一個實例;
2)必須自己創建自己這唯一的實例;
3)單例類必須給所有其他對象提供這一實例;
適用條件:某個系統要求一個類只有一個實例時才使用單例模式。
5)模板方法模式:
准備一個抽象類,將部分邏輯以具體方法以及具體構造子類的形式實現,然后聲明一些抽象方法來使子類實現剩余邏輯。不同子類可以以不同的方式來實現這些抽象方法,從而對剩余的邏輯有不同的實現;
就是先定義一個模板,在邏輯的的細節由子類實現;
優點:
1)將代碼的公共行為提取出來,達到復用的目的;
2)父類的模板方法控制子類的具體實現;
適用條件:一次性實現一個算法的不變的部分,並將可變的部分留給子類來實現;
各個子類中公共的行為應該提取出來,並集中到一個公共父類中,避免代碼重復;
除了以上框架中需要使用的模式外,還有其他常用設計模式:
6)適配器模式:Adapter,類似變壓器的使用,又稱變壓器模式;
即把一個類的接口變換成客戶端所期待的另一種接口,從而使原本接口不匹配的而無法在一起工作的兩個類能夠在一起工作;
適配器模式分為類的適配器模式和對象的適配器模式兩種不同的形式;
區別:類的適配器模式就是使用繼承關系將適配的類的API轉換成目標類的API,而對象的適配器模式不是使用繼承關系,而是使用了委托關系;
7)命令模式:
命令模式屬於對象的行為模式,又稱為行動模式(Action)或交易模式(Transaction)。命令模式把一個請求或操作封裝到一個對象中。命令模式允許系統使用不同的請求把客戶端參數化,對請求排隊或記錄請求日志,可以提供命令的撤銷和恢復功能;
命令模式是對命令的封裝。命令模式把發出命令的責任和執行命令的責任分隔開,委派給不同的對象,每個命令的都是一個操作;
優點:
1)命令模式使新的命令很容易地被加入到系統里
2)允許接收請求的一方決定是否要否決請求;
3)能較容易設計一個命令隊列;
4)可以容易的實現對請求的undo和redo
5)在需要的情況下,可以較容易的將命令記入日志;
8)觀察者模式:(Observer)
是對象的行為模式,又叫做發布-訂閱模式(publish-subscribe),模型-視圖模式(Model/View),源-監聽器模式(Source/Listener)或從屬者模式(Dependents).觀察者模式定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某個主題對象。這個主題對象在狀態上發生變化時,會通知所有觀察者對象,使他們能自動更新自己。
使用設計模式可以:
1)確定並不明顯的抽象和描述這些抽象的對象;
2)決定一個對象應該是什么
3)定義對象的操作
4)描述對象的實現
5)最大程度的復用
選擇設計模式的步驟:
1)理解問題需求:需求是模式選擇的基礎,通過對需求的分析可以找到多個模式,形成模式組;
2)研究組內模式:需求分析得出的組內模式有一些共性,但是每種模式都有其特殊的意圖,使用動機和使用條件,因此需要對組內模式進行研究
3)考慮設計模式如何解決設計問題:在此過程中,主要考慮設計模式在設計中所支持的可變化因素,即確定改變什么而不需要重新設計,根據這一點可以找到所需要的設計模式。此外考慮與其相關的設計模式;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM