摘要:介紹Java中對象、類、包、組件、容器、框架和架構等的基本概念,掌握這些概念對於學習Java web和日后工作大有裨益。
對象
對象(Object)是由類進行聲明的,於是它就具有類所定義的特性了(屬性和行為等)。這里討論的對象不是找個男朋友或者女朋友。在Java的世界里,對象通過屬性和行為來分別對應事物所具有的靜態屬性和動態屬性。
對象是具體的,自身具有狀態和行為,用於描述現實世界中實體。世間萬物皆為對象,譬如貓、老虎和狼等就是動物類中的三個對象。
類
類(Class)是一個用於描述同一類型對象的抽象概念,是具有相同屬性和行為的一組對象的集合(模板)。類是抽象的,不具體的,她把具有相同特征的事物歸為一類,比如:貓、老虎和狼等都是動物,故把它們歸為動物類。
類是對現實世界中的實體反映,或者說類是抽取了同類事物的共同屬性和行為的對象(或實體)的一個模板。
類與對象的關系:類是對象的抽象,對象是類的實例。對象由屬性和行為組成,屬性是對象所具有的特征,而行為是對象可以做的動作。
包
包(package)的作用可以理解為windows系統用來分門別類的文件夾,一層套一層,故包主要用來提供一個組織和管理類的機制,並為包中的類提供一個命名空間。示例:
- model:模型層
- view:視圖層
- controller:控制層
- servise:服務、業務層
- dao:持久層,用來和數據庫溝通
組件
組件(component)也是抽象的概念,可以理解為一些符合某種規范的類組合在一起就構成了組件。她可以提供某些特定的功能,以J2EE為例,有什么servlet,jsp, javabean和ejb等,她們都是組件,但實際上她們都是類,只不過有她們特殊的規定。組件和類的關系:符合某種規范的類的組合構成組件。
舉個例子,拿 JavaBean 對象是什么來說。下面給出的是 JavaBean 與其她 Java 類相比而言所具有的獨一無二的特征:
- 所有的類必須聲明為public class,這樣才能夠被外部所訪問;
- 屬性必須封裝,即使用private聲明;
- 必須編寫屬性對應的setter、getter方法;
- 至少存在一個無參構造方法;
- 需要被序列化並且實現了 Serializable 接口。
JavaBean也就是個類,她的屬性可以是任意類型,並且一個JavaBean可以有多個私有屬性。每個屬性通常都需要具有相應的setter和getter方法,setter方法稱為屬性修改器,getter方法稱為屬性訪問器。有了這些屬性的類就是JavaBean了,如下代碼所定義的類SimpleBean就是一個JavaBean:
package blog.test;
public class SimpleBean implements java.io.Serializable{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
JavaBean在J2EE開發中,通常用於封裝數據,對於遵循以上寫法的JavaBean組件,其她程序可以通過反射技術實例化JavaBean對象,並且通過反射那些遵守命名規范的方法,從而獲知JavaBean的屬性,進而調用其屬性保存數據。
組件也可以理解為實現具體功能的類,例如上傳下載組件,分頁組件,日歷組件等等,這些組件可以直接拿來使用,避免重復發明輪子。
容器
容器(Container)也叫做組件容器,她是一種比較特殊的組件,相當於把對象分門別類進行管理。我們可以把組件放在組件容器中,就像小學生分班,分學校一個道理。
框架
框架(framework)就是一組組件,供你按需組合完成系統構建。Java框架就是一些類和接口的集合,通過這些類和接口來完成一系列的程序實現。框架又叫做開發中的半成品,它不能提供整個WEB應用程序的所有東西,但是有了框架,我們就可以集中精力進行業務邏輯的開發而不用去關心它的技術實現以及一些輔助的業務邏輯。廣為人知的Structs和MyBatis就分別是Web框架和數據庫(持久層)框架的佼佼者。
通俗點講,就像蓋房子,開發商建造了很多相同的房子,這就是框架,而每個房間的布置需要業主自己裝修。所以為了高效,開發商負責建造房子的主題結構,具體裝修風格就看業主喜好了。
架構
軟件架構描述的對象是直接構成系統的抽象組件。在實現階段,這些抽象組件被細化為實際的組件,比如某個類或者對象。在面向對象領域中,組件之間的連接通常用接口來實現。
框架不是架構。架構確定了系統整體結構、層次划分,不同部分之間的協作等設計考慮。框架比架構更具體,更偏重於技術范疇。對於同一架構(比如Web開發中的MVC),可以通過多種框架來實現。
結束語
以上就是這篇文章的全部內容了,希望本文對大家的學習或者工作能帶來一定的幫助,如有疑問請留言交流。Wiener在此祝各位生活愉快!工作順利!