英語のがクールだと思って英語版を買ったせいで買ってから読む気がしなくてずっと放置していたが読み始めた。
わたしの英語は限りなく怪しいので参考にしないでください。モチベーションを上げるためのメモです。でも何か間違っているところを見つけたら教えてほしいとおもう。
EFFECTIVE JAVA 第2版 (The Java Series)
- 作者: Joshua Bloch,柴田芳樹
- 出版社/メーカー: 丸善出版
- 発売日: 2014/03/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (9件) を見る
static factory methodがコンストラクタよりクールな点
- コンストラクタと違ってクールななまえを付けられる
- 作らなくてもいい時はインスタンスを作らない選択肢が出来る(シングルトンみたいに同じのずっと返したり出来る)
- サブクラスを返せる。
- ジェネリクスを冗長にかかなくてよい?
Service provider frameworkの3つの要素
- 実装の対象となるインターフェース?(いわゆるインターフェース?)(service interface)
- service provider interfaceの実装を登録するメソッド?(provider registration API)
- インスタンスを得るためのインターフェース(ファクトリメソッド?)(service access API)
- サービスのインスタンスを作るためのインターフェース(サービスとは別に?)(service provider interface)
ここいまいちわからん
DriverManager.getConnectionが例になってるが
引数にmysqlのURIを指定したらMySQLのコネクションが帰ってくるしSQLiteだったらSQLiteのコネクションがかえってくるし?みたいなことなのか
そうするとprovider registration APIを呼び出してるのは誰なんだ?
JDBCドライバをクラスパスに入れるとイニシャライザかなんかが呼び出す?
Class.forNameとかがアレしてるのかな・・・?
返すインスタンスの判定に文字列を使うのってあんまりいけてる感じしないんだけどどうなんだろ?Enumだとインターフェースの提供側がサービス増えるごとにEnumいじんなきゃいけない?から無茶だし?
JDBCドライバをのソースをみてみる
適当にぐぐったSQLiteのJDBCドライバのソースでてきた
xerial / sqlite-jdbc / source / src / main / java / org / sqlite / JDBC.java — Bitbucket
staticイニシャライザでDriverManager.registerDriverを読んでた
Class.forNameでクラスをロードすると登録される感じ
Class.forNameってあんまり意味わかってなかったけどようするにクラスをロードすればいいわけでライブラリのクラスをnewしたりでもいいってこと?
Adaptor Patternってなんだ
昔買ったまま全然読んでない(英語が難しいから)本を読んでみる
- 作者: Eric Freeman,Elisabeth Freeman,Kathy Sierra,Bert Bates
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2004/11
- メディア: ペーパーバック
- クリック: 11回
- この商品を含むブログ (7件) を見る
インターフェースAの実装をインターフェースBの実装でラップしてインターフェースAの実装をインターフェースBとして使えるみたいなやつだった。
あかんたれな感じがする。
ジェネリクスを冗長に書かなくてよいってのはJava7でダイヤモンド演算子使えるようになったからもうあんまりあれなのかな。
static factory methodの弱点
ちょいちょいでてくる( Item 4)とかがなんなのかわかんねえ・・・
➩この本の中でのここを参照せよ!みたいなマークだった
Google日本語入力を入れてからやじるしで変換すると大量の謎やじるしが出てきてこまるようになった。