首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

編寫高質量 JavaBean 類的完整規範指南:屬性、事件、BeanInfo 與國際化

     編輯:J2EE

遵循 Sun JavaBean 規範的核心要求

編寫專業 JavaBean 必須遵循 Sun Microsystems JavaBean 規範。以下從構造器、屬性、事件、操作、BeanInfo、國際化、部署等維度詳細說明最佳實踐。

通用基礎要求

1. 公共無參構造器與默認屬性值

public Fireworks() {
    setAutoStart(true);
    setBackground(Color.black);
    setSpeed(10);
    setRadius(40);
}

構造器中調用 setter 設置默認值,確保屬性初始化一致性。

2. 可視 Bean 的首選/最小尺寸

public Dimension getPreferredSize() {
    return new Dimension(radius * 3, radius * 3);
}
public Dimension getMinimumSize() {
    return getPreferredSize();
}

避免初次放入設計器時顯示 0×0 像素導致用戶困惑。屬性變更時首選尺寸應動態調整(如方向切換)。

屬性設計規範

標準屬性模式

private int speed;
public int getSpeed() { return speed; }
public void setSpeed(int s) {
    speed = s;
    // 影響外觀時重繪
    repaint();
    // 影響尺寸/位置時驗證佈局
    validateAll();
}
  • 私有實例變量 + 公共 getter/setter
  • 方法名:get/set + 屬性名首字母大寫
  • Boolean 型可用 is 前綴

屬性變更通知與驗證

private void validateAll() {
    if (isValid()) {
        Component self = this;
        self.invalidate();
        Component parent = self.getParent();
        if (parent != null) {
            parent.invalidate();
            self = parent;
        }
        self.validate();
    }
}

屬性設置順序不應影響 Bean 行為,需支持任意順序初始化。

操作方法設計

  • 每個操作對應一個公共方法
  • 方法應自包含:無需預先建立連接或設置大量屬性即可獨立執行
  • 示例:音頻 Bean 的 play() 應處理打開聲音、設置參數、播放全流程;stop() 即使未播放也應正常工作
public void start() {
    if (thread == null) {
        thread = new Thread(this);
        thread.start();
    }
}

事件模型實現

1. 事件類

public class FireworksEvent extends EventObject {
    public static final int EXPLODED = 1;
    private int id;
    public FireworksEvent(Component source, int id) {
        super(source);
        this.id = id;
    }
    public int getID() { return id; }
}
  • 繼承 EventObject
  • 定義公共靜態常量標識事件類型(如 EXPLODED)

2. 監聽器接口

public interface FireworksListener extends EventListener {
    void exploded(FireworksEvent e);
}
  • 擴展 EventListener(JAR 向導識別關鍵)
  • 每個事件類型定義一個公共抽象方法

3. Bean 類中管理監聽器

private Vector listeners = new Vector();
public void addFireworksListener(FireworksListener l) {
    listeners.addElement(l);
}
public void removeFireworksListener(FireworksListener l) {
    listeners.removeElement(l);
}

4. 觸發事件廣播

public void processFireworksEvent(FireworksEvent e) {
    for (Enumeration en = listeners.elements(); en.hasMoreElements(); ) {
        ((FireworksListener) en.nextElement()).exploded(e);
    }
}
public void run() {
    // 觸發點
    processFireworksEvent(new FireworksEvent(this, FireworksEvent.EXPLODED));
}

產品級 Bean 八大準則

  1. 體積越小越好:大 Bean 導致工具/瀏覽器/JDK 滯後。必須大時考慮插件/獨立 JAR/安裝程序(但增加用戶下載步驟)。
  2. 國際化就緒:所有文本(名稱、描述、屬性編輯器選項如「高/中/低」)分離到 .properties 文件。JAR 向導自動處理,屬性編輯器/定製器需手動分離。理想情況提供多語言 properties。
  3. 清單文件指定 Dependencies:區分「運行時需要」vs「僅編輯時需要」(如屬性編輯器)。JAR 向導發布標簽簡化操作。未指定則假設全部運行時需求,損害下載性能。
  4. 明確首選尺寸:實現 getPreferredSize,關鍵屬性變更時自動調整。
  5. 指定默認屬性:利用 BeanDescriptor 定義默認屬性,提升工具易用性。JAR 向導自動生成 BeanInfo。
  6. 友好名稱與描述:屬性名用非技術術語(如 sum interval 代替 accumulatorInterval),首選小寫+空格分隔。
  7. 縮小可見屬性/操作範圍:提供 BeanInfo 隱藏內部實例變量/方法。JAR 向導簡化操作。
  8. 提供圖標:32×32(大)、16×16(小)彩色圖標,透明背景(非灰色)。養成提供黑白圖標習慣。JAR 向導調色板標簽支持。

總結

優秀的 JavaBean 不僅功能正確,更需在工具集成性、國際化、部署效率、用戶體驗等方面達到專業標準。遵循本指南可確保 Bean 在各類構建工具、IDE、運行環境中表現一致、高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved