JavaBeansとは?

  1. Javaでクラス設計を行う際に推奨される設計規約(アーキテクチャ)
    1. プロパティクラス (こちらはどちらかというとコーディング規約)
    2. イベント処理クラス (こちらはどちらかというとデザインパターン)
  2. JavaBeansアーキテクチャ(TM)に則って設計されたクラスは、プログラマにとって使い勝手がよい(慣用的な使い方)ができるばかりでなく、プログラムからも扱いやすい。
    1. java.beansパッケージのJavaBeans操作クラス
    2. CGLIBjavaassistでバイトコードを扱うフレームワークを作る際に、対象がJavaBeansアーキテクチャに則っていることを前提とする(AOPの基盤アーキテクチャ)

プロパティクラス

  1. クラス属性はpublic
  2. デフォルトコンストラクタ(引数無しのコンストラクタ)を用意すること
  3. フィールドをprivate属性にして、setter/getter でカプセル化する。
    1. 一般的なプロパティのカプセル化
      private int age;
      public int getAge();
      public void setAge(int pAge);
    2. boolean型のカプセル化
      private boolean enable;
      public boolean isEnable();
      public void setEnable(boolean pEnable );
    3. 配列やCollectionのカプセル化
      private String[] poem;
      public String[] getPoem();
      public void setPoem( String[] pPoem );
      public String getPoem( int index );
      public void setPoem( int index , String sentence );
  4. オブジェクトの永続化
    1. 通常の永続化(Javaに、いつ・どのように永続化するかを任せる)
      • Serializableインタフェースを実装すると、transit以外のフィールド属性がSerializeされる。
    2. どのように永続化するかを指定したい
      • Serializableインタフェースを実装する
      • 以下のメソッドを実装する
        private void writeObject(java.io.ObjectOutputStream out)
          throws IOException;
        private void readObject(java.io.ObjectInputStream in)
          throws IOException, ClassNotFoundException;
    3. いつ・どのように永続化するかを指定したい
      • Externalizableインタフェースを実装する ( Externalizable は Serializable を継承している )
      • 以下のメソッドを実装する
        private void writeExternal(java.io.ObjectOutputStream out)
          throws IOException;
        private void readExternal(java.io.ObjectInputStream in)
          throws IOException, ClassNotFoundException;

イベント処理

event.jpg
  1. イベントソースクラス
    • イベントを起こすクラスです
    • フィールド属性にリスナのコレクションをもっています
      1. public synchronized add<Event Listener> メソッドでリスナを追加します
      2. public synchronized remove<Event Listener> メソッドでリスナを削除します
      3. リスナーの数を制限したいときには、TooManyListenersException? を投げます
    • 「イベントを起こす」には?
      フィールド属性に保持しているリスナのイベント処理メソッド( ユーザクラス#eventOccured(e) )を呼びます。
  2. イベントリスナ
    • EventListener?を継承します
    • イベントソースから呼ばれる、ユーザクラスのインタフェースを定義します。
      • イベント処理メソッドを定義します
      • イベント処理メソッドの引数は、イベントオブジェクトを使います
    • イベントを「受け取りたい」ユーザクラスは、xxイベントリスナを実装します。
      つまり、イベントソースクラスから呼ばれるイベント処理メソッド( eventOccured(e) )を実装する。
      JavaBeansのイベント処理モデル=コールバック
  3. イベントオブジェクト
    • EventObject?を継承します
    • 以下のメソッドをoverwriteします
      1. EventObject?(Object source)
      2. Object getSource()
      3. String toString()

参考文献

  1. Andy Quinn(Sun), Java Tutorial, http://java.sun.com/docs/books/tutorial/javabeans/index.html
  2. 山中 馨(創価大学経営学部), 1999, Java Beans開発のエッセンス, http://www.s.soka.ac.jp/~may/kokai99/Chap1.html
  3. Hey! Java Programming!(Java Beans), http://www.mars.dti.ne.jp/~torao/program/misc/beans.html

Java#JavaSE


添付ファイル: fileevent.jpg 2629件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2006-02-18 (土) 12:51:22 (6875d)
Short-URL:
ISBN10
ISBN13
9784061426061