先日勉強会でやった、cloneの話。

それを使った、Prototypeパターンの話。



改めて、参考書読んで、デザパタ本を読んで、ってしてみると、なんとなくハラオチ。

ミックスイン、っていうのは、付加情報的な考え方を指すんだという理解。

参考文献には、その役割を果たすインターフェースをマーカインターフェースと紹介しているし。


ただ、Cloneableインターフェースをimplementsしているからといって、なんでObjectクラスの
clone()が呼べるのかが謎。

具体的な実装は何処に。
Effective java には、cloneの使い方に関連して、「深いコピー」の話が書いてあったけど、
java言語で学ぶデザインパターン入門 には、普通に(普通って何だ!?って議論はおいといて)
コピーした場合の「浅いコピー」の説明が書かれてます。

浅いコピーでは、配列とか、オブジェクトとか(参照系)は、新しいインスタンスだからといって、
新しいメモリ領域をとって・・・ってことはしてくれない。
だから、その場合の対処として、super.clone()を呼びつつ、必要なフィールドに対しては、
自分でコピーするようにcloneをオーバーライドすべし。

・・・ってことなのかな。


あんまりcloneって使う機会が今まで無かったけれど、(まぁ理解してなかったんだから使えなかった、
というのが正しいけれど) 「クラス名なしで」インスタンスを生成できる、というのは確かにうれしいことかも。



本は、平行して読め、みたいな話も聞いたことがあるけど、今日はその恩恵をモロに受けた。

いろんな知識≒toolをちゃんと使いこなせるようにならないと。


・・・・脊髄反射で。