咖啡豆(JavaBean)?香

Sun公司對JavaBean的定義為:可以重復利用的軟件組件,它在遵循JavaBean技術規范的基礎上提供特定的功能,這些功能模塊可以組成更大規模的應用系統。

到底什么是JavaBean?

先看一段代碼:

/** * @author yong * */ public class Add { public static void main(String[] args) { int a = 10; int b = 20; int c; c = a + b; System.out.println("a+b=" + c); } }

上面的代碼很簡單,它的功能就是求出ab的和并且輸出。

但是從軟件工程的角度來看,上面的代碼有一下幾點不足:

可定制性差,如果現在要求其他的兩個數相加那么就必須修改程序代碼重新給ab賦值才能完成新的需求。

可維護性差,整段代碼相互緊扣,如果得不到用戶想要的結果那么就不得不從頭到尾進行檢查。類似于上面的代碼還是很簡單的,但是如果一個大型的系統寫成上面那樣,如果出了問題調試起來就非常費勁了。

復用性差,如果系統的不止一個地方需要用到上面代碼的功能那么就不得不在整個代碼中寫兩邊幾乎完全一樣的代碼。

上面的這些問題隨著系統的增大而越發的明顯,從而上面的代碼的價值也會隨著系統的增大而變得越來越小。

于是JavaBean技術出現了,簡單的說JavaBean就是普通的java類,和其他的普通類的區別就在于在遵循JavaBean規范的前提下對一些功能進行封裝,并對外界提供可以調用的方法接口,從而可以提高代碼的復用性,而且如果程序出問題可以很容易的把錯誤定位在某個模塊使程序的調試、開發的效率提高,同時也方便了合作開發,你一個Bean我一個Bean各不干擾。

改造后的代碼:

/** * @author yong * */ public class AddBean { private int a; private int b; //求a,b兩個數的和 public int add(int a,int b){ return a+b; } //打印a,b兩個數的和 public void print(){ System.out.println("a+b="+(a+b)); } //獲取a的值 public int getA(){ return a; } //給a賦值 public void setA(int a){ this.a=a; } //獲取b的值 public int getB(){ return b; } //給b賦值 public void setB(int b){ this.b=b; } }

上面的這個類就是一個簡單的JavaBean

如此看來JavaBeanvb6.0當中我們把相似的代碼提出來構成一個過程的思路異曲同工,甚至可以說JavaBean和微軟的com組件是一個作用的,都是封裝代碼然后供其他的代碼調用,從而方便開發。

調用代碼:

/** * @author yong * */ public class Test { public static void main(String[] args){ //新建addbean對象 AddBean add=new AddBean(); //設置a,b的值 add.setA(10); add.setB(20); //調用AddBean的方法打印a,b的和 add.print(); } }

JavaBean的種類

JavaBean大體可以分兩類:第一類是可視化的,第二類是非可視化的

可視化JavaBean就是就是帶有界面的java類,如按鈕,文本框等等類似于VB當中的控件。只不過一般情況下在java中我們沒有像VB中那樣對控件進行拖拖拽拽,但是有些IDE可以實現和VB類似的功能例如JBuilder或者eclipse里面的Swing/Matisse插件等。

非可視化的JavaBean就是沒有界面的的java類,例如上面的那段實現ab求和并輸出的類就是一個非可視化的JavaBean。這些JavaBean把功能進行封裝方便其他的類的調用所以在web開發當中用到的JavaBean大多是非可視化的JavaBean。

JavaBean的編碼規則

JavaBean的編碼規范在sun公司的網站上可以下載到(官網下載的速度有限,現在已將文檔上傳到我的文檔中,需要的童鞋可以去下載),100多頁的英文PDF文檔相當磨練人的耐心,在這里總結如下幾條。

1、每個屬性必須有對應的屬性獲取和設置方法,即每個屬性必須要提供相對應的個gettersetter方法。

2、如果一個屬性的類型為boolean類型,則屬性對應的獲取和設置方法就有所不同,例如某個boolean類型的屬性名為isLuck那么相對應的屬性獲取方法為isLuck()屬性設置方法為setLuck()。

3、所有屬性最好是私有變量,即各個類的屬性最好設置為private,對屬性的取值和賦值操作要通過對應的取值賦值方法進行

4、所有的方法要設置為共有方法,即所有方法要設這為public

以上總結的幾條就是編寫非可視化JavaBean需要遵循的編碼規范,只有這樣別的開發者才能方便的調用JavaBean中提供的功能方法。

為什么屬性都要設置成私有,方法都要設置成共有呢?

轉載于:https://www.cnblogs.com/beijiguangyong/archive/2012/02/24/2371003.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/274985.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/274985.shtml
英文地址,請注明出處:http://en.pswp.cn/news/274985.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新一代的編譯工具 SWC,97年小哥寫的~

大家好,我是若川。持續組織了5個月源碼共讀活動,感興趣的可以點此加我微信 ruochuan12 參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。最近前端圈掀起了一…

開始學習jQuery和準備工作

<script>$(document).ready(function(){}); 首先&#xff0c;在頁面頂部添加一行script元素&#xff0c;然后在下一行寫上結束符。 瀏覽器會運行script里所有的Javascript&#xff0c;包括jQuery。 在你的script元素里&#xff0c;添加這段代碼&#xff1a;$(document).r…

粉紅噪音_粉紅的常綠力量

粉紅噪音I use Instagram. But I don’t use Instagram in the way that my daughters, who are 21 and 14, use Instagram. More to the point, Instagram doesn’t use me in quite the same way it uses my daughters.我使用Instagram。 但是&#xff0c;我不會像21歲和14歲…

Sql Server 中存儲過程的output return的區別

看http://zxianf.blog.163.com/blog/static/301207012009114104124969/中片關于Sql Server中存儲過程output和return值的區別 在里面有講解&#xff0c;我在自己本機中測試的結果如下&#xff0c; 1&#xff1a;ReturnValue只能返回0,1,-1這樣的數據&#xff0c;局限性很大 &am…

1個月增長15000 star,zx 庫寫shell腳本真不錯~

大家好&#xff0c;我是若川。持續組織了5個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。今天來討論一個牛逼…

灰色邊框陰影_50種暗模式灰色陰影

灰色邊框陰影If you’re an avid dark mode user like me, you’ll know that dark mode isn’t just about white text on black backgrounds. In a single app, a handful of shades of gray give the app some depth. And across various apps, the spectrum of gray become…

Android源代碼下載

為什么80%的碼農都做不了架構師&#xff1f;>>> Android代碼使用git管理, 所以關于Android源碼下載一般來說要安裝git. 本文是講述只使用Eclipse完成Android源碼下載和關聯. 下載Eclipse,目前最新版本是Juno,自帶了EGit插件-->Eclipse Git插件 那么可以使用EGit…

關于nginx調轉404錯誤頁面

在server{}模塊添加如下&#xff1a; error_page 404 /404.html; location /404.html { root /var/www/html/sina/; #“404目錄地址” }轉載于:https://www.cnblogs.com/alang85/archive/2012/03/01/404_error.html

尤雨溪:Vue 3 將成為新的默認版本

過完年&#xff0c;大年初七&#xff0c;Vue3 將成為默認版本&#xff0c;這時感覺我之前寫的幾篇文章都可以抽空更新一版了。尤雨溪推薦神器 ni &#xff0c;能替代 npm/yarn/pnpm &#xff1f;簡單好用&#xff01;源碼揭秘&#xff01;Vue 3.2 發布了&#xff0c;那尤雨溪是…

shell編程系列20--文本處理三劍客之awk常用選項

shell編程系列20--文本處理三劍客之awk常用選項awk選項總結選項 解釋 -v 參數傳遞 -f 指定腳本文件 -F 指定分隔符 -V 查看awk的版本號[rootlocalhost shell]# awk -v num2"$num1" -v var1"$var" BEGIN{print num2,var…

v-charts加載動畫_加載動畫-用戶體驗寫作練習

v-charts加載動畫Many new UX writers often struggle to find the balance between creativity and clarity. You can’t make everything fun/exciting/interesting as it can have an adverse effect on usability. But there are times when you can add a bit of flair.許…

linux 常用命令收集

關機&#xff1a;poweroff&#xff0c;shutdown -h now&#xff0c;init 0重啟&#xff1a;reboot&#xff0c;shutdown -r now&#xff0c;init 6 關閉x-window&#xff1a;init 3啟動x-window&#xff1a;init 5&#xff0c;start x1.終止命令&#xff1a;ctrlc 2.結束輸入…

34歲回顧人生,也怕中年危機!

大家好&#xff0c;我是若川。持續組織了5個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。最近發生一件令人感…

蛋花花APP,APP開發這幾點你要注意了

蛋花花君又來了&#xff0c;這次蛋花花君為大家分享的是APP開發過程中需要注意的幾點。 1、用戶體驗 程序猿蛋花花覺得&#xff0c;APP開發是為客戶來開發的&#xff0c;而不單單是為了老板&#xff0c;畢竟真正使用的是廣大用戶。APP的設計應該從用戶的角度出發&#xff0c;提…

svg動畫制作_制作第一個SVG動畫

svg動畫制作Story of a designer trying to code animations instead of asking a dev to figure it out.一位設計師嘗試編寫動畫代碼而不是要求開發人員弄清楚動畫的故事。 編碼動畫是Webdesign的未來 (Coded animations are the future of Webdesign) Because we have acces…

網站前端設計,從960框架開始

一個網站進入到前端設計階段&#xff0c;第一步肯定是為全站搭建一個統一的&#xff0c;基礎的HTML模型&#xff0c;在這里推薦一下我剛學習的960框架。960是一個CSS框架&#xff0c;你肯定在想&#xff0c;這個世界肯定是瘋了&#xff0c;連CSS都有框架了嗎&#xff0c;沒錯&a…

60+ 實用 React 工具庫,助力你高效開發!

大家好&#xff0c;我是若川。持續組織了5個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。最近看到一些實用的…

2012年12月第二個周末

2019獨角獸企業重金招聘Python工程師標準>>> 這周&#xff0c;裝上了windows版的 Linux版的oracle 熟悉了下SQL*PLUS的編程規則&#xff0c;還有常用的linux命令 看了一本《簡愛》 正在看oracle 轉載于:https://my.oschina.net/u/204616/blog/545513

『C#基礎』調用CMD的一個小工具

由于經常要使用CMD的一些命令&#xff0c;比如查看IP&#xff0c;Ping一個網址之類的。于是就寫了一個調用CMD.exe的小工具。 主要就是實現這樣一個事情&#xff1a;調用CMD.exe然后傳給它我想要執行的命令&#xff0c;最后獲取結果。 界面&#xff1a; 代碼&#xff1a; 主要執…

小姐姐:如何參與大型開源項目-Taro 共建

大家好&#xff0c;我是若川。持續組織了5個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。“本文來自前端程序…