[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: 『Java Report』?の記事
前橋です。
岸田さん:
>> 私はやっぱり interfaceの方が正しいような気がします。
>>
>…私は、このレポートの場合、変更に強いAPIを作るにはというテーマがある
>ようですので、その限りにおいては abstractクラスを使う選択はいいような
>気がしてます。
>インターフェース(interface でない)で設計していくというのは、なるほど
>と思うのですが、interface にするか abstract クラスにするかはあんまり
>こだわらずに使っていいのかもしれない、どっちも同じ効果だったら、将来
>の拡張に強いタイプを選んでもいいかもと思います。
この場合、「多重継承の問題がないのであれば」が前提ですが、多
重継承の問題があるかどうかは、APIを提供するクラスライブラリ
側で決めることではなくて、インタフェースを実装する側で決める
ことでしょうから、APIがそこを規定してしまうと、汎用性がなく
なってしまうような気がします。
妥協案としては、
(1)interfaceにするけれども、同じメソッドを空で実装した
abstractクラスを一緒に提供する(イベントアダプタでやってる
ように)。
(2)メソッドなしのinterfaceを提供し、リフレクション使って無理
矢理呼び出す(Serializableはこうやってるはず)。
どっちも裏技のような気がしますが...
# ちょっと前に、似たようなこと書いたような気がする(^^;
(2)の技は、これ↓とほとんど同じですが、
>> interface も abstractクラスも使わず、Objectで受けて、メソッ
>> ドの名前だけ決めて、リフレクション使って無理矢理呼び出す...
>> これなら、その名前のメソッドがなければ何もしないようにすれば
>> いいし、名前が衝突しない限り、多重継承の問題も発生しない。完璧!!
>>
>> ...冗談ですよ。もちろん :-)
>>
>よかった。可読性悪いソース読むのは非常に困ります(困っています)。
とりあえず、Objectでなくてinterfaceで受けるようにすれば、可
読性の悪い部分は、APIを提供するクラスライブラリ側だけにほぼ
封入できる、という点で、あながち冗談とも言えないかもしれませ
ん。もっとも、実装するとき、メソッドの名前や引数を間違えても、
コンパイラは怒ってくれませんが。
>前橋さんも名古屋で読書会同時開催するとか?…テレビ会議できるといいで
>すね。
テレビ会議はともかく、賛同される方いらっしゃいます? > 名古屋の方
7月の週末は大阪行ったり東京行ったりと大変なので、私も東京ま
で行くのはさすがにちょっと厳しそうなんですが、某MLのカラオケ
OFFもあるし... (^^;
# JavaReportの記事は、実は論点が全然違っていたりして。
------------------------------------------------------------
前橋 和弥 maebashi@xxxxxxxxxx
中部ソフトエンジニアリング(株)
〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------