ある日の偉い人「Beanは部品で機能をまとめたものな」
俺「ほう」
またある日の偉い人「Utilityクラスっていう共通処理を集めたクラスがあるんな」
俺「ほうほう」
……どっちも機能をまとめた奴じゃねえか!何が違うんだおまえら!とか1人で勝手に激おこプンプン丸状態だったので調べてまとめ。
ただし間違えてるかもしれない。
#定義
##Bean
特定の機能を持ったプログラム。
privateな変数(プロパティ)とpublicなアクセス経路(アクセスメソッド:getter/setter)を持つ。
インスタンス化して用いる。
###サンプル
public class InfoBean {
/** ID */
private String id;
/** 名前 */
private String name;
/**
* IDを返却
* @return id
*/
public String getId() {
return id;
}
/**
* IDをセット
* @param id ID
*/
public void setId(String id) {
this.id = id;
}
/**
* 名前を返却
* @return name
*/
public String getName() {
return name;
}
/**
* 名前をセット
* @param name 名前
*/
public void setName(String name) {
this.name = name;
}
}
##Utility
staticな変数とstaticなメソッドのみからなる。
インスタンス化を避けるため コンストラクタは基本的にprivateかprotectedで宣言。
###サンプル
java.lang.Mathとかあのあたり
→ http://docs.oracle.com/javase/jp/6/api/java/lang/Math.html
#まとめ
たぶん「インスタンス化して使うかどうか」が一番の違いだと思う。
インスタンス化するってことはそいつが死ぬまでプロパティが保持されるってことになるので(上の例だとIDとNameをそれぞれ持たせたのを作れる)
Beanの利用例としてあるメソッドの引数として生成したインスタンスをぶん投げたりして 共通データ を利用したり出来る。
一方でUtilityは 共通処理 としてあらゆる場所から引っ張ってくることが出来る。
ということで
Bean = 共有するデータ
Utility = 共通する処理
とおぼえておくことにした。 なおあっているのかは不明の模様