- - PR -
JAVAにおけるstaticメソッド
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-05-14 16:00
これらのクラスを利用する側からすれば、 「クラスAに対する計算方法を知っているCalculator」が欲しいのであって、 それが具体的にどのクラスで実装されているかについては どうでもよいことです。 ですから、無名クラスを使わない場合でも、私なら ACalcはパッケージプライベートなクラスとするか、 クラスAのprivate staticなメンバクラスとして定義するでしょう。 # Collections.reverseOrder()などは、まさにこのパターンです。 Singletonにしているのは、あくまでついでですね。 # "private staticな内部クラス" → "private staticなメンバクラス" に修正。 [ メッセージ編集済み 編集者: yamasa 編集日時 2003-05-15 01:08 ] | ||||||||
|
投稿日時: 2003-05-14 16:33
実は私も一瞬staticと書いてしまったのですが・・ガマンガマン・・です。
ふむ・・そうですね。 じゃあ、こういうことですね。
でAとACalcは同じパッケージということで。 なぜ頑なにinner classを避けるかというと、 1.CVS等で管理するときにファイル単位でクラスが分かれていたほうがやっぱり簡単だった 2.本来inner classはそのクラスから利用する為だけのものとして誕生した 3.他のクラス構成に流用しやすい(コピペ万歳) という思いがあります。 | ||||||||
|
投稿日時: 2003-05-15 01:35
いえ、ACalcをパッケージプライベートなクラスにするというのは、 単に以下のように書き換えるって意味です。
なお、クラスAにcalculatorメソッドだけを定義し、getSumメソッドを 定義していない理由は、将来Calculatorクラスに最大値・最小値・ 平均・標準偏差などを求めるメソッドを追加したとしても クラスAに対する変更をしなくて済むからです。 | ||||||||
|
投稿日時: 2003-05-15 16:55
なるほど、calculatorのモデリングはそういった意図ですか。 そういうことであれば、元に戻してACalcを個別のクラスとして提供する方が 私の意図には合いそうです。 また、ACalcというよりはCollectionOperatorというかATotalStuffとか どちらかというと便利屋になってしまうので、 CollectionSummaryというスーパークラスで再定義したほうが 私にとっては直感的です。 |