給初學者之九:收尾。一篇介紹幾個常見的概念
設計模式這可不僅是java獨有,我看的書就是c++和smalltalk例子的
先說說什么是設計模式
模式是什么?模式是經驗的總結,潛規則的抽象
什么意思呢?比如說我們坐飛機,上飛機前需要經過幾個步驟
什么安檢領取登機牌之類的,這一套流程能不能改呢? 可以,但為什么幾乎全世界的航空公司登機前都是這一套流程呢?
因為航空公司經過長期實踐之后得出了一堆結論和經驗。并認為這樣做才是安全,或說是有效率的。這就是模式,模式是編程高手之間交流的橋梁
兩個編程高手通過統一命名的模式了解對方的思想,當然不借助模式可不可以?當然可以,只是模式無處不在,你不知道而已
又比如吃飯,每吃一口飯,我們要先端碗,拿筷子,張嘴,塞飯入口,咀嚼吞咽。這就是一套模式,我們給這套模式命名為吃飯。那么當老爸叫吃飯的時候,我們就能明白什么意思
而不用老爸進來囈囈啊啊并比畫上半天,啞語也不是這么用的!這就是模式,已知的模式有400多種//好象更多,不記得了,比如數據庫有數據庫的設計模式,編程有編程的模式等等
面向對象有常用的21種模式,需要掌握,主要分為創建,行為,結構三類
J2ee有J2ee的模式,Sun公司出了一本書叫《J2EE核心模式》可以拿來看看。必需要指明的是,模式不是規范,比如吃飯模式
沒有人規定你吃飯非得要那么吃,你可以端碗,上拋,張嘴在下落后連碗一起吞咽。這也可以,只要你愿意,同樣,只要你愿意,你就可以不遵循模式。模式之外還有反模式,學模式不可定勢,不要學死,活學活用,無招勝有招才是境界
JavaDoc
文檔工具,極其好用
可以根據注釋自動生成HTML文檔
Ant
98年,有一位程序員在從歐洲飛回美國的飛機上想到了這么一個東西從而改變了整個世界,他的名字叫James Duncan Davidson組織管理工具,可以這么描述它
比如你想在編譯之后自動再次生成JavaDoc,那么你只需要編輯Ant腳本//對,就像Windows腳本那樣。然后批處理就可以了,不過現在Ant已經廣泛集成到IDE中去,不需要自己手動編寫,不過如果想要炫炫,據說此招百試不爽
JUnit
測試工具,Unit家族可不只有JUnit
還有其它版本的,這個不細說,具體實踐一下就明白了
POJO
//Plain Old Java Object
就是傳統的Java對象,也就是一個JavaBean由虛擬機來掌握其生死,常用的兩個管理構架/規范是Spring和EJB容器
命名由來是某人//名字我忘了
覺得我們使用了太多的規范,以至于我們都忘記了純粹的java對象。以至于我們都忽略了它的存在,所以叫了這么一個名字
以喚醒人們的記憶,這個意義上來說EJB其實不能算是POJO
畢竟遵循了一堆的接口,但是不管怎樣,接口歸接口,還是沒有繼承類。沒有被強加什么//遵循可以寫空方法假遵循
所以說還是POJO也對
但是由于這種東西缺乏管理,不象Servlet有專門的容器管理并繼承了一定的類,而沒有管理的對象在虛擬機中是很危險的,因為垃圾回收機制各個虛擬機不同
而且也不怎樣,極有可能長時間不回收,這樣在企業級的應用中呢!就有可能造成內存大量被占用從而死機,毫無疑問,這種機制需要優化
這種優化就是通過EJB容器或者Spring構架來實現這么做還有一個好處就是迫使程序員對每一個類做封裝。強迫他做管理,以達到防止內存泄露的目的,內存泄露經常出現的錯誤就是
引用未釋放,引用典型體現在new這個關鍵字上,new得越多引用得越多,隨著時間地增長,有可能導致循環,不停new new new new new.....
其中哪怕只要有一個new處理不當,虛擬機無法回收內存!那就極有可能完蛋,而且這種小bug越是在大的項目越是難以找到,有可能因為一個人而影響整個項目組,所以不妨記住我的一條經驗
好的系統框架不應該在業務邏輯流程中出現new關鍵字現在不理解也無所謂,將來有會明白的
SOA
面向服務的構架
不說太多,這個屬于上上層建筑
不過不妨記住我的一句話,可以幫助理解這個概念
面向什么就是對什么做封裝
面向對象就是對對象做封裝
面向服務類似,剩下的靠悟性
反射
1.4新增功能,非常強大
通過反射,程序可以解析出類本身的屬性也就是變量
//注意這里說的屬性不是.net里面的屬性,我不喜歡微軟造的新名詞,亂
還有行為也就是方法,然后通過invoke()方法調用該方法
甚至可以新增對象等,java首創,本是其它語言所沒有的
后來被微軟抄了去,利用該功能,開源框架廣泛受益并大量采用,近乎瘋狂地使用
具體就不說了,要指出的是,有一種說法是利用反射會降低效率
在早期的時候,的確是,現在不會了,放心使用
容器
5.0以后的版本在J2SE中都出現了容器
各位甚至可以自己嘗試用標準庫去使用容器