Java SE7 Gold 取得を目指して (4)


Java SE7 Gold をとりたい…!

本日は第4回目です。

今日のこぼれ話

ひさびさにC#からJavaを書いていて感じるのは、やっぱり型推論欲しいなーという点。
第3回の Outer.Inner obj = new Outer().new Inner(); とか辟易としますよね。あまり使いませんけど。
あとじわじわ効いてくるのが、List<MyClass> list = new ArrayList<MyClass>(); でしょうか。ProjectCoinで List<MyClass> list = new ArrayList<>(); で書けるよ!とか言われましても、恩恵はわずかといいますか…。
え、GroovyとかScalaとかKotlinとか、甘い誘惑はやめてください、試験勉強中ですよ!
Lombok? 何それおいしいんですか? おなか壊しませんかね…。

本日知ったこと(4章)

  • is-a と has-a

    • has-a で特に強い関係がコンポジション → 全体と部分のオブジェクトの生存期間が同じ
    • is-a でも has-a でも他クラスの機能を利用できるが、利用する側にとって不要な機能が追加されてしまうような場合は has-a でのアプローチがよさそう
  • パターン

    • Singleton
      • よく見る(使う)
      • マルチスレッドとかを考えて synchronized Single getInstance() { ... } とかやる
    • DAO
      • Frameworkの普及で意識しなくてもこのパターンを使っていることが多い
    • Factory
      • valueOf() はこのパターンらしい。 せっかくなのでIntegerクラスのソースを見た。いろいろ省略すると↓
       public static Integer valueOf(String s, int radix) {
         return valueOf(parseInt(s, radix));
       }
    
       public static Integer valueOf(String s) {
         return valueOf(parseInt(s, 10));
       }
    
       public static Integer valueOf(int i) {
         return new Integer(i);
       }
    

デザインパターンとか出てきて、Goldらしい内容になってきた気がします。
ところで、is-a ってイズアって読むんですね。英語で考えれば当然なんでしょうが、「BオブジェクトはAオブジェクトだ」という意味でイズエーだと思ってました。口に出す前に知ってよかったです。