Java我的三個月——OOP的樂趣 (轉)

amyz發表於2007-08-15
Java我的三個月——OOP的樂趣 (轉)[@more@]

我發現從學習然後轉到語言的學習對於我來說是一個很好的過程。有位大師說“面向技術降低了的門檻”,這句話我想應該可以放到技術中,更改為“JSP技術降低了Java程式入門的門檻”。利用JSP技術,可以用比普通Java程式碼更少的語句實現“hello world”。

JSP技術封裝了客戶端Java程式碼和網路應用的連線,加上技術的後臺支援,使得開發人員可以很容易的將程式控制邏輯封裝到網頁中,生成動態的網頁。以JSP/Servlet技術構成了的平臺前端,這使得開發人員可以更專注於後端業務邏輯的獨立和實現。這也是我至今為止看到的MVC的最佳表現。MVC是迄今為止應用最為廣泛的體系結構,模型—檢視—控制器的結構劃分使得程式結構非常清晰,程式的表現形式更加多樣,程式功能的耦合更加寬鬆,業務邏輯更加獨立,這都保證了的可維護性和可擴充套件性。

由於Java是一個純OO的語言,這使得一些設計在Java中可以非常容易的實現,你可以很輕鬆的運用設計模式來提高程式碼的質量,甚至在不知不覺之中你已經自己“創造”了一個設計模式,即使你從未接觸過這種設計模式。在我們小組開發JSP的時候,不同開發人員都需要利用JC與打交道,起初每個開發人員都試圖使用自己的連線方法,大部分人採用最簡單的Manager.getConnection()方法獲取資料庫連線,但是很快我發現很多的網頁和Javabean中都有這樣的程式碼,這是非常恐怖的事情:如果有很多網頁都需要單獨請求資料庫連線,這將造成極大的資源佔用和浪費,而且一旦資料庫發生改變,將異常複雜。於是我立即寫了一個包含getConnection()靜態方法的資料庫連線Javabean,交給每個開發人員。這樣在開發過程中可以很容易的得到資料庫連線,節省了開發時間。而且統一了資料連線介面。由於使用靜態方法,資料庫連線更加。最重要的是,由於對資料連線多了一層封裝,這使得改變資料庫連線方式將非常容易,比如可以很容易的使用資料庫連線池來提高系統的。後來我才知道這其實屬於Façade模式,儘管我以前並不知道Façade模式。

在開發應用伺服器的時候,Servlet的功能可能會無限擴大。我參考了《JSP設計》書中的Action方法,實現了自己的Servlet-Action結構。我對這個Action作了一些修改,增加了第二個請求引數“dowhat”,這使得一個Action可以更多的任務,減少了Action的開發工作量。在實際開發過程中,開發人員都很好的接受了這樣的伺服器程式結構。

Java的技術也非常有意思。設計Java的人再一次貫徹了MVC體系結構,這使得Java的視窗介面開發也具有了JSP開發一樣的靈活性。(這裡由於本人先接觸了JSP,後才接觸Swing,所以由此感覺。事實上Swing技術的出現遠早於JSP技術)

利用Java的介面和實現類,可以更好的鬆散系統的功能。Java介面和實現的分離完全不同於C/C++語言的介面和實現(.h和.cpp檔案)。Java介面和實現分離非常好的體現了“plug-in”概念,而C/C++的介面和實現分離並沒有帶來真正意義上的介面概念,只是很勉強的在程式碼檔案上下文章,除了可以帶來inline的執行之外,我看不到更多的優點。新的語言也拋棄了C/C++的模式。

Java的介面和實現類使得功能擴充套件更加方便。現在的J2EE系統開發已經可以很清晰的劃分為介面的開發和業務邏輯的開發兩大部份。在業務邏輯開發過程中,考慮到系統效能和升級,我們更多的要首先確定系統的功能範圍,然後根據功能範圍以最快的速度寫出功能實現,這往往不是最好的實現,更好的實現將作為系統升級來開發。這裡的“實現”應該指的是具體的物件了,而“功能”並不是一種物件。利用C++開發時,往往首先考慮使用類繼承來實現功能的可升級和可擴充套件性,利用不同的子類來實現相同的功能介面。這樣不同實現之間體現出了一種並列的物件關係,“實現”表現為“功能”這個“物件”的擴充套件——但是事實上功能和實現是兩種不同層面上的概念。利用Java介面及可以很好的從概念上分離功能和實現,更加明確不同類(包括介面)的開發要求,開發人員可以很廣泛的使用介面,而不用過多考慮具體類的變化。:namespace prefix = o ns = "urn:schemas--com::office" />


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958601/,如需轉載,請註明出處,否則將追究法律責任。

相關文章