JavaBean 簡述與代碼示例


JavaBean

  • JavaBean 是一個普通的 Java 類。包括 POJO,VO 等。
  • JavaBean 是一種 Java 語言寫成的可重用組件。爲寫成 JavaBean,類必須是具體的和公共的,並且具有無參數的構造器。JavaBean 通過提供符合一致性設計模式的公共方法將內部域暴露成員屬性,set 和 get 方法獲取。衆所周知,屬性名稱符合這種模式,其他 Java 類可以通過自省機制(反射機制)發現和操作這些 JavaBean 的屬性。

1. 使用規範

  1. 所有字段(成員變量)爲 private。
  2. 提供無參構造方法。
  3. 提供 getter、setter 和 is 方法(例如下面示例中 success 生成的方法)。is() 方法用於查看選擇的元素是否匹配選擇器。如果成員變量是 boolean 類型,生成的 get 方法時就生成 is() 方法。
  4. 實現 Serializable 接口。實現 Serializable 接口的作用是能夠讓該類的對象可以序列化寫出到硬盤上。

2. 代碼示例

  • 下面的 User 類有 4 個字段(成員變量),有無參構造方法,有一個屬性(username)。
package com.company.up.domain;

import java.io.Serializable;

public class User implements Serializable {

    private String username;

    private Integer age;

    private String sex;

    private boolean success; // 是否操作成功


    public User() {
    }
    
    // 可省略全參構造方法

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

3. 分類與用途

  • JavaBean 是一種可重用的 Java 組件,它可以被 Applet、Servlet、SP 等 Java 應用程序調用.也可以可視化地被 Java 開發工具使用。它包含屬性(Properties)、方法(Methods)、事件(Events)等特性。
  • JavaBean 是一種軟件組件模型,就跟 ActiveX 控件一樣,它們提供已知的功能,可以輕鬆重用並集成到應用程序中的 Java 類。任何可以用 Java 代碼創造的對象都可以利用 JavaBean 進行封裝。通過合理的組織具有不同功能的 JavaBean,可以快速的生成一個全新的應用程序,如果將這個應用程序比作一輛汽車,那麼這些 JavaBean 就好比組成這輛汽車的不同零件。對軟件開發人員來說,JavaBean 帶來的最大的優點是充分提高了代碼的可重用性,並且對軟件的可維護性和易維護性起到了積極作用。
  • JavaBean 的種類按照功能可以劃分爲可視化和不可視化兩類。可視化的 JavaBean 就是擁有 GUI 圖形用戶界面的,對最終用戶是可見的。不可視化的 JavaBean 不要求繼承,它更多的被使用在 JSP 中,通常情況下用來封裝業務邏輯、數據分頁邏輯、數據庫操作和事物邏輯等,這樣可以實現業務邏輯和前臺程序的分離,提高了代碼的可讀性和易維護性,使系統更健壯和靈活。隨着 JSP 的發展,JavaBean 更多的應用在非可視化領域,並且在服務器端應用方面表現出了越來越強的生命力。

4. 功能與特點

  • 用戶可以使用 JavaBean 將功能、處理、值、數據庫訪問和其他任何可以用 Java 代碼創造的對象進行打包,並且其他的開發者可以通過內部的 JSP 頁面、Servlet、其他 JavaBean、Applet 程序或者應用來使用這些對象。用戶可以認爲 JavaBean 提供了一種隨時隨地的複製和粘貼的功能,而不用關心任何改變。
  • JavaBean 可分爲兩種:一種是有用戶界面(UI,User Interface)的 JavaBean;還有一種是沒有用戶界面,主要負責處理事務(如數據運算,操縱數據庫)的 JavaBean。JSP 通常訪問的是後一種 JavaBean。
    JavaBean 是可複用的平臺獨立的軟件組件,開發者可以在軟件構造器工具中對其直接進行可視化操作。軟件構造器工具可以是 Web 頁面構造器、可視化應用程序構造器、GUI 設計構造器或服務器應用程序構造器。有時,構造器工具也可以是一個包含了一些 Bean 的複合文檔的文檔編輯器。
  • JavaBean 可以是簡單的 GUI 要素,如按鈕或滾動條;也可以是複雜的可視化軟件組件,如數據庫視圖,有些 JavaBean 是沒有 GUI 表現形式的,但這些 JavaBean 仍然可以使用應用程序構造器可視化地進行組合。一個 JavaBean 和一個 JavaApplet 相似,是一個非常簡單的遵循某種嚴格協議的 Java 類。每個 JavaBean 的功能都可能不一樣,但它們都必須支持以下特徵。
  • 一個 Bean 沒有必須繼承的特定的基類或接口。可視化的 Bean 必須繼承的類是 java.awt.Component,這樣它們才能添加到可視化容器中去,非可視化 Bean 則不需要繼承這個類。有許多 Bean,無論是在應用程序構造器工具中,還是在最後創建好的應用程序中,都具有很強的可視化特徵,但這並非每個 Bean 必須的特徵。在使用 Java 編程時,並不是所有軟件模塊都需要轉換成 Bean。Bean 比較適合於那些具有可視化操作和定製特性的軟件組件。
  • 從基本上說,JavaBean 可以看成是一個黑盒子,即只需要知道其功能而不必管其內部結構的軟件設備。黑盒子只介紹和定義其外部特徵和與其他部分的接口,如按鈕、窗口、顏色、形狀、句柄等。通過將系統看成使用黑盒子關聯起來的通訊網絡,我們可以忽略黑盒子內部的系統細節,從而有效地控制系統的整體性能。

5. 組成

  • 一個 JavaBean 由 3 部分組成:

a. 屬性(properties)

  • JavaBean 提供了高層次的屬性概念,屬性在 JavaBean 中不只是傳統的面向對象的概念裏的屬性,它同時還得到了屬性讀取和屬性寫入的 API 的支持。屬性值可以通過調用適當的 Bean 方法進行。比如,可能 Bean 有一個名字屬性,這個屬性的值可能需要調用 String getName() 方法讀取,而寫入屬性值可能要需要調用 void setName(String str) 的方法。
  • 每個 JavaBean 屬性通常都應該遵循簡單的方法命名規則,這樣應用程序構造器工具和最終用戶才能找到 JavaBean 提供的屬性,然後查詢或修改屬性值,對 Bean 進行操作。JavaBean 還可以對屬性值的改變作出及時的反應。比如一個顯示當前時間的 JavaBean,如果改變時鐘的時區屬性,則時鐘會立即重畫,顯示當前指定時區的時間。

b. 方法(method)

  • JavaBean 中的方法就是通常的 Java 方法,它可以從其他組件或在腳本環境中調用。默認情況下,所有 Bean 的公有方法都可以被外部調用,但 Bean 一般只會引出其公有方法的一個子集。由於 JavaBean 本身是 Java 對象,調用這個對象的方法是與其交互作用的唯一途徑。JavaBean 嚴格遵守面向對象的類設計邏輯,不讓外部世界訪問其任何字段(沒有 public 字段)。這樣,方法調用是接觸 Bean 的唯一途徑。
  • 但是和普通類不同的是,對有些 Bean 來說,採用調用實例方法的低級機制並不是操作和使用 Bean 的主要途徑。公開 Bean 方法在 Bean 操作中降爲輔助地位,因爲兩個高級 Bean 特性–屬性和事件是與 Bean 交互作用的更好方式。因此 Bean 可以提供要讓客戶使用的 public 方法,但應當認識到,Bean 設計人員希望看到絕大部分 Bean 的功能反映在屬性和事件中,而不是在人工調用和各個方法中。

c. 事件(event)

  • Bean 與其他軟件組件交流信息的主要方式是發送和接受事件。我們可以將Bean的事件支持功能看作是集成電路中的輸入輸出引腳:工程師將引腳連接在一起組成系統,讓組件進行通訊。有些引腳用於輸入,有些引腳用於輸出,相當於事件模型中的發送事件和接收事件。
  • 事件爲 JavaBean 組件提供了一種發送通知給其他組件的方法。在 AWT 事件模型中,一個事件源可以註冊事件監聽器對象。當事件源檢測到發生了某種事件時,它將調用事件監聽器對象中的一個適當的事件處理方法來處理這個事件。由此可見,JavaBean 確實也是普通的 Java 對象,只不過它遵循了一些特別的約定而已。

6. 特徵

  • 第一,其中 JavaBean 爲共有類,此類要使用訪問權限對 public 進行修飾,主要是爲了方便 JSP 的訪問;
  • 第二,JavaBean 定義構造的方式時,一定要使用 public 修飾,同時不能要參數,不定義構造方式時,Java 編譯器可以構造無參數方式;
  • 第三,JavaBean 屬性通常可以使用訪問權限對 private 進行修飾,此種主要表示私有屬性,但是也只能在 JavaBean 內使用,在聲明中使用 public 修飾的則被認爲是公有權限,主要是方便同時 JSP 進行交互;
  • 第四,使用 setXXX() 的方法以及 getXXX() 的方法得到 JavaBean 裏的私有屬性 XXX 數值;
  • 第五,JavaBean --定要放在包內,使用 package 進行自定義,也可以放在 JavaBean 代碼第一行;
  • 第六,對於部署好的 JavaBean 修改是,一定要重新編譯節碼文件,同時啓動 Tomcat 服務器,之後便能夠生效。

7. 優點

  • 構件對組裝環境具有較強的適應能力。通過主對象對組裝環境的感知,協調內部對象作出反應,改變接口狀態以適應環境。在必要時,可依靠外部驅動對象的引入,進一步增強對環境的適應能力。實現從分析設計到實現的平滑過渡。領域分析和設計的基本原則:將領域知識和計算機實現分離開來。將構件內部對象劃分成實現用戶功能的對象集和用於組裝的對象集加以實現,符合分析和設計原則。最大限度地利用成熟的技術。從構件的分析、設計和實現都可藉助已有的比較成熟的面向對象技術。

8. 開發環境

a. 設計環境

  • 第一點說明的是 Bean 必須可以在設計環境(design environment)中運行。在設計環境中,Bean 應該提供設計信息給應用程序構造器工具並允許終端用戶制定 Bean 的外觀和行爲。
  • 在傳統的軟件構造活動中,必須通過編譯、鏈接之後才能看到應用程序的最終運行結果;而利用 JavaBean 設計的軟件中,則沒有這種明確的界限。使用 JavaBean,就可以非常直觀地設計應用程序軟件,在設計過程中賦予軟件主機。而且,這個過程更加容易重複開發,設計思想更加容易變成原型。

b. 運行環境

  • 第二點說明的是 Bean 必須可以在運行環境(run-time environment)中使用。在這個環境中,對設計信息和定製的需求並不重要。一個組件的設計環境信息和設計環境中編寫的代碼通常可能是非常巨大的。
  • 因此,我們可能需要在 Bean 的設計環境方面和運行環境方面作一個明確的區分,這樣,就可能需要在運行環境中不使用 Bean 的任何設計環境代碼來配置這個 Bean。所以,JavaBean 就必須分別支持運行環境接口的類庫和設計環境接口的類庫。

9. 常用 JavaBean

  • PO:Persistent Object 持久對象;
  • POJO:Plain Ordinary Java Object,無規則簡單 Java 對象;
  • BO:Business Object 業務對象;
  • VO:Value Object,值對象 / View Object,表現層對象;
  • DTO(TO):Data Transfer Object,數據傳輸對象;
  • DAO:Data Access Object,數據訪問對象。
    在這裏插入圖片描述

原文鏈接:https://qwert.blog.csdn.net/article/details/105715152

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章