[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: [jfriends] Re: 『Java Report』?の記事




岸田です。

Kazuya Maebashi wrote:
> 前橋です。
> 
> 岸田さん:
> >> 私はやっぱり interfaceの方が正しいような気がします。
> >>
> >…私は、このレポートの場合、変更に強いAPIを作るにはというテーマがある
> >ようですので、その限りにおいては abstractクラスを使う選択はいいような
> >気がしてます。
> >インターフェース(interface でない)で設計していくというのは、なるほど
> >と思うのですが、interface にするか abstract クラスにするかはあんまり
> >こだわらずに使っていいのかもしれない、どっちも同じ効果だったら、将来
> >の拡張に強いタイプを選んでもいいかもと思います。
> 
> この場合、「多重継承の問題がないのであれば」が前提ですが、多
> 重継承の問題があるかどうかは、APIを提供するクラスライブラリ
> 側で決めることではなくて、インタフェースを実装する側で決める
> ことでしょうから、APIがそこを規定してしまうと、汎用性がなく
> なってしまうような気がします。
> 
確かに。abstract クラスを選んでもいいのは、java.awt.LayoutManager
のように多重継承をしないであろうと予想される時という条件がありますね。 

> 妥協案としては、
> 
> (1)interfaceにするけれども、同じメソッドを空で実装した
>   abstractクラスを一緒に提供する(イベントアダプタでやってる
>   ように)。
> (2)メソッドなしのinterfaceを提供し、リフレクション使って無理
>   矢理呼び出す(Serializableはこうやってるはず)。
> 
> どっちも裏技のような気がしますが...
> 
今回は、クラスライブラリをどのように作っていくかというお話なので、
大量のクラスについて全部それをやるのもというのがありますけど。

岸田ゆき枝
yukie@xxxxxxxxxx