團隊項目合作探索系列二 開發模式

團隊項目合作探索系列二:開發模式

關於開發模式的文章實在太多了,多得讓人越看越糊塗.到谷歌裏隨便一搜索,就能找出成千上萬的文章.

那開發模式到底是什麼,這樣題目很難回答,因爲他是抽象的,但是原理是明確的,我來講個示例:

現在,我需要在A 類中引用B類,請問我們應該如何做呢,在C++與Java中有什麼差別.

天啊,這麼簡單的問題,沒錯,確實很簡單,一般我們的做法,如同C++一樣,如圖:

 

一般,我們的做法就是:
classB classb = new classB();
這也是C++的做法,也就是C++的模式,應該說C++沒有模式之說.而我們做JAVA時通常的做法也是如此,直接NEW一個對象來進行調用.
但是,我們現在利用J2EE常用的開發模式思想來設計我們的日常開發.那麼我們應該怎樣做呢.
沒錯,我們不應該直接調NEW方法來創建classB對象,我們應該調classB的接口,如下圖:在classA中通過calssB的接口來調用classB.


 
恭喜你,你已經開始有J2EE的開發模式有所掌握了.這種模式很常見,用得也是最廣泛的,比如在我們的ssh框架中就大量存在.如我們的三層框架類就是這樣的大量接口,servce通過接口調DAO.當然這個過程也不是完全符合.
但是JAVA衆多模式所提的不僅僅就是這一點點.其模式據說已經成文的就多達25種之多.
我再將上面的模式變化一下,如下圖所示:ClassA不直接操作創建ClassB,而是把這個創建ClassB的任務交給另一個對象ClassC.


 
大家一眼就看出來了,這就是經典的工廠模式,ClassC就是那個工廠或者說裝配器.
但是這樣做還不夠,配合前面的模式,在ClassC與ClassB之間再加上ClassB的接口.變成如下所示:


 
這樣看起來似乎不錯,不過,我們應該在ClassA與ClassC之間也嘗試分離開來.結果如下:


 
 
但是這樣做,我們還是覺得有點不太舒服,因爲在ClassA要ClassB時,我還是要明確的告訴ClassC幫我創建ClassB,而且ClassA還必需明確的知道ClassC,所以就產生了一種模式,叫做代理模式,ClassA不再通過IClassC接口調ClassC,再通過ClassC來創建ClassB這種方式,改成如下方式:


 
ClassA只管使用ClassB接口裏的對象,而不用管是誰幫他創建了ClassB,而ClassC只管生產創建ClassB,而不用管是誰要這個對象.應該說,Spring框架就有點像這種模式,不過實際上並不一樣.

好啦,基本上,J2EE的開發模式與這幾種大同小異,而介紹出來的這幾類也是使用最多最常見的也是最實用的,當然也是我現在掌握瞭解的幾種,但是,作爲日常開發而言,是足夠的,但是,我們想進一步提高我們的技術,特別是做技術構架以及項目設計時,這些還遠遠不夠,我們需要了解更多,更多.

歸結一下:作爲JAVA的開發設計模式,有很多,但是這麼模式,歸根到底,都是同樣的原則,那就是讓JAVA開發更加快捷,方便,穩健等.以及代碼的高內聚和低耦合.每種模式都有各自的優點,我們在開發之中應該靈活採用相應的模式.

沒有最好的模式,只有合適的模式,靈活合理的採用不同的模式,才能讓你的開發更加有效~~~~~~~歡迎大家一起來討論這種話題!

 

本文原文發表在我的個人博客上: http://www.busfly.net/post/teamwork-02-Modes-java-cpp.html 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章