JavaSE的MV模式(國際化)
一、簡介
國際化( internationalization )是設(shè)計和制造容易適應(yīng)不同區(qū)域要求的產(chǎn)品的一種方式。它要求從產(chǎn)品中抽離所有的與語言,國家/地區(qū)和文化相關(guān)的元素。換言之, 應(yīng)用程序 的功能和代碼設(shè)計考慮在不同地區(qū)運行的需要,其代碼簡化了不同本地版本的生產(chǎn)。開發(fā)這樣的程序的過程,就稱為國際化。
Java 作為一個跨平臺的東西,如果想著自己的產(chǎn)品推向世界, Java 實現(xiàn)國際化,在現(xiàn)在現(xiàn)在編程工程上是必不可少的了。
另外:
再說,很多童鞋都說我們縮寫的應(yīng)用軟件都基本談不上國際化,基本能在國內(nèi)使用已經(jīng)很了不起了。
我得反駁下這一個說法。
大家都熟知的我們在寫 web 項目的時候通常都在使用 MVC 模式的開發(fā),為什么 ~ ,那是具有一個巨大的有點,功能應(yīng)用,圖形顯示,邏輯結(jié)構(gòu)都分開了,利于維護(hù),利于分工。
那么我們就應(yīng)該想到,如果這一個模式也應(yīng)用的 JavaSE 上面的畫,我們之前所學(xué)的東西不都具有這些優(yōu)點了嗎?不能說完全的是,也不能說完全的沒有。
做過 android 項目開發(fā)的童鞋相對都有那么一定的經(jīng)驗。寫每一個 activity 的時候,基本都要在 string 中載入他們每一個控件所對應(yīng)的值。
好,那我們就看看在 JavaSE 上面的具體操作把。大家感受感受。
二、國際化的步驟
1 、實現(xiàn)國際的程序
2 、實現(xiàn)國際化的參數(shù)文件 property
3 、裝載 properties
4 、裝載對應(yīng)的 key
三、具體實現(xiàn)
1 、實現(xiàn)國際的程序
先寫一個簡單的 JavaSE 程序,由于這個相對與本文不是重點,這個就不羅嗦了。
2 、實現(xiàn)國際化的參數(shù)文件 property
簡單說明: property 文件 就是一個數(shù)據(jù)信息的文件,
具體為格式為: 參數(shù) = 對應(yīng)值
有點類似我們的 map 對應(yīng)關(guān)系
比如我們已經(jīng)實現(xiàn)了一個 Properties
En.properties
內(nèi)容為:
Java代碼
- title = english
- button = my_button
- logo = bin/qq.gif
3 、裝載 properties
在我們的程序中載入就可以
Java代碼
- Properties prop ;//設(shè)置文件
- /**
- * 構(gòu)造方法,載入properties
- */
- public international(){
- prop = new Properties();// 屬性集合對象
- FileInputStream fis = null;
- try {
- fis = new FileInputStream("src/en.properties");
- prop.load(fis);//載入
- fis.close();// 關(guān)閉流
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
#p#
4 、裝載對應(yīng)的 key
Java代碼
- /**
- * 顯示界面
- */
- public void showUI(){
- //設(shè)置大小
- this.setSize(400,300);
- this.setTitle(prop.getProperty("title","中文"));//設(shè)置默認(rèn)值為"中文"
- this.setLayout(new java.awt.FlowLayout());
- javax.swing.JButton jb = new javax.swing.JButton(prop.getProperty("button","我的按鈕"));//設(shè)置默認(rèn)值為"我的按鈕"
- this.add(jb);
- javax.swing.JLabel logo = new javax.swing.JLabel();
- logo.setIcon(new ImageIcon(prop.getProperty("logo","bin/360.png")));
- this.add(logo);
- this.setVisible(true);
- }
好我們看看裝載前,裝載后的效果。
即,將步驟 1 注釋后,和沒有注視的效果
注釋后:

沒注釋:

當(dāng)然 , 如果我們載入的是一個鳥語的話 ,
即 :
寫好鳥語的 properties 文件
Java代碼
- title = bird languange
- button = bird_button
- logo = bin/bird.jpg
只需將
Java代碼
- fis = new FileInputStream("src/en.properties");
改為 :
Java代碼
- fis = new FileInputStream("src/bird.properties");
即可

四、分析
顯然,這么以來,邏輯結(jié)構(gòu)和視圖結(jié)構(gòu)基本就能分開了。版本翻譯,維護(hù),分工相對以前都比較方便了。同一個模式的來學(xué)習(xí) , 現(xiàn)在的主流模式 , 之后學(xué)習(xí) web,android 什么的 , 都會相對于比較方便了 .
【編輯推薦】