領域類是什么鬼?領域不是field嗎?
Oxford Dict中的解釋是,domain源自於法語domeine,原意是estate, belonging to a lord,后來引進英語主要指an area of territory。domain在計算機方向有兩個解釋:
- 來自於數學術語,the set of possible values of the independent variable or variables of a function.
- 因特網,a distinct subset of the Internet with addresses sharing a common suffix.
因特網這個比較好理解,網站也叫site,所以網域是借助了an area of territory的含義。而編程中的domain主要來自數學上的含義,在數據庫設計中,是指一個獨立的數據類型能夠包含的全部取值范圍。我們知道OOP中都是值傳遞,Java Bean就是對值的封裝,它的所有取值范圍就被抽象成類,和數據庫中的表對應,表的一條記錄又對應一個對象,那一張表所有可能的記錄就是它的domain,也就是說,不同的類就是不同的domain(所有取值的集合),因此Java Bean,Entity,POJO,domain model說的其實是一個東西,而且從這個意義上也很容易將對象理解成map。
順便提一下哲學上的解釋也很有意思。中文里"范圍"被翻譯為scope,range或limits,而domain被翻譯為"范疇",與category同義,是指哲學中對所有存在最廣義的分類,是分類的最高層次的統稱,是人的思維對客觀事物的普遍本質的概括。所以你看,domain正好契合了OOP中一切皆是對象的思想。