程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 程序人生:Java三個月—OOP的樂趣

程序人生:Java三個月—OOP的樂趣

編輯:JAVA編程入門知識

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

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

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

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

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

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

Java的接口和實現類使得功能擴展更加方便。現在的J2EE系統開發已經可以很清楚的劃分為界面的開發和業務邏輯的開發兩大部份。在業務邏輯開發過程中,考慮到系統性能和升級,我們更多的要首先確定系統的功能范圍,然後根據功能范圍以最快的速度寫出功能實現,這往往不是最好的實現,更好的實現將作為系統升級來開發。這裡的“實現”應該指的是具體的對象了,而“功能”並不是一種對象。利用C++開發時,往往首先考慮使用類繼續來實現功能的可升級和可擴展性,利用不同的子類來實現相同的功能接口。這樣不同實現之間體現出了一種並列的對象關系,“實現”表現為“功能”這個“對象”的擴展——但是事實上功能和實現是兩種不同層面上的概念。利用Java接口及可以很好的從概念上分離功能和實現,更加明確不同類(包括接口)的開發要求,開發人員可以很廣泛的使用接口,而不用過多考慮具體類的變化。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved