servlet(controller)+jsp(view)+javabean(model)
那么經典的三冊架構的體系圖例如以下:
那么看一下上述架構的使用。
在中心的黃色部分:也就是服務端部分。層與層之間的調用關系。
舉一個樣例:
web層:UserServlet.java類
service層:UserService類
dao層:UserDao類
javaBean:user
那么層與層之間的調用關系就該是這樣:
在UserServlet.java中調用UserService。
那么調用的方式僅僅能是在UserServlet類中去創建UserService的對象。
例如以下:
class UserServlet{
UserServcie userService=new UserService();
//調用userService的相關方法進行業務邏輯的操作
。
。。
。
}
同理:UserService調用UserDao的時候,也有類似上述的代碼。
有上述的分析得出結論1:
1.那么上述代碼之間的層與層之間的關系就非常緊密。
是違背了軟件project的設計思想的。
軟件project要求,模塊與模塊之間的耦合式越低越好。一句經典的軟件project設計的話是這種。
“高內聚。低耦合”。
同一時候上述的dao層,我們看一下既有對xml的操作,也有對db的操作,甚至還有很多其它。
得出了結論2:
2.上述架構。同一時候違背了“高內聚。低耦合”中的高內聚的思想。
於是上面的架構體系又有了例如以下的增進:
看service層。dao層
1.解決dao層的內聚問題,把xmlDao和dbDao進行分離。
2.對dao層抽取一個共性的接口出來。Dao接口
分析:之前的架構中,service層調用dao層是這種。
UserService中須要寫這種代碼:XmlDao xmlDao=new XmlDao()//此時沒有接口
加上接口以后,Dao dao=new XmlDao();
3.加入工廠
上面的寫法變成:Dao dao=Factory.getXmlDao();
那么工廠怎樣調用dao層的相關方法呢?假設直接調用,出現的結果是盡管攻克了service層和dao層之間的耦合關系,可是事實上僅僅只是演變
成了工廠和dao層之間的高耦合。
那么增加了xml技術,工廠通過讀取xml文件。然后利用java的反射,去創建所需創建的對象就ok了。
而在xml中僅僅要提供了類的全路徑。然后做相關配置,目的是方便工廠去讀取xml文件去創建對象。
4.加入配置文件。
配置文件不過字符串。和dao層之間沒有耦合關系。
總結:對於第三種架構(高內聚。低耦合),便於維護,便於擴展。
為什么便於擴展,舉個樣例:比方。dao層中。又有了新的持久化技術,service層實際上無所知道不知道。僅僅要改動配置文件。
工廠就會去有
對應的操作。這樣一來,是不是便於維護和擴展。
上面了。我們看了service層。dao層,通過接口,工廠類,配置文件的方式實現了解耦。
同理,web層,service層也能夠通過同樣的方式的進行解耦。
在上圖中沒有全然體現。
隨着技術的發展。出現了非常多mvc的框架比方struts+spring+hibernate/springMvc.
在剛出現這些框架的時候,基本上都是通過上述方式進行解耦。
用過框架的人都知道,框架多基於配置文件,反射原理,內省等。
再發展了現在,搞架構的那些人,認為。寫配置文件也非常費勁。就有了現在的基於注解模式的框架設計。
可是。上述的架構思想,和演變過程,是后期框架技術的源頭哦。
后期,我也會對JavaWeb項目開發過程的框架技術結合MVC設計模式做更深入的分析。
通常javaweb+框架技術的開發,被人們稱
作java企業級開發。
也就比較的流行的J2EE/JAVAEE.
使用分包描寫敘述結構
com.ghsy ,公司域名倒寫(安徽安慶高恆塑業有限責任公司)
com.ghsy.項目名稱
com.ghsy.項目名稱.dao dao接口
com.ghsy.項目名稱.dao.impl dao實現類
com.ghsy.項目名稱.service service接口
com.ghsy.項目名稱.service.impl service實現類
com.ghsy.項目名稱.web.servlet servlet處理類
com.ghsy.項目名稱.web.filter 過濾器處理類
com.ghsy.項目名稱.web.listener 監聽器處理類
com.ghsy.項目名稱.domain javabean 封裝數據(bean)
com.ghsy.項目名稱.utils 工具類
com.ghsy.項目名稱.exception 自己定義異常
com.ghsy.項目名稱.constant java常量 Xxx.NAME
/WEB-INF/ jsp頁面,安全
* 使以請求轉發顯示器jsp頁
版權聲明:本文博主原創文章。博客,未經同意不得轉載。
