=
ホーム
On Your Mark
ホーム
/
設計(Java)
/
【Java】 Effective Java 第二版 お勉強 コンポジション
2013年10月25日金曜日
Java
基本
設計(Java)
t
f
B!
P
L
# クラスとインターフェイス ## 今日 読んだところ P 80~85 ## 項目 継承よりコンポジションを選ぶ
## 継承するときは注意 継承するときは、スーパークラスの実装を詳細に理解すること。
本ではHashSetを継承した場合の例を出していました。
add()とaddAll()をオーバーライドし、
呼び出された場合、追加された要素の件数をカウントするよう実装していました。
JavaDocにも書かれていますが、addAll()はadd()を呼び出しており、
このままだと二重にカウントしてしまうバグになってしまいます。
このようにスーパークラスの仕様を知らずに継承すると大変なことになります。
## 継承せずに Composition(組み立て)とForwarding(転送)を使うと良い。
コンポジションは簡単にいうと、別のクラスのオブジェクトを取り込んで利用すること。
Setを実装した転送クラスを生成し、それをラッピングすることでOK。
## 継承の使いどころ スーパークラスの実装を正しく理解していること。
スーパークラスとサブクラスが、本当のサブタイプ関係があるときに使う。
それ以外は、普通にコンポジションを使用するほうが良い。
## ちなみに 委譲は自身のオブジェクトを渡して他のクラスに処理を任せることを言う。
Translate
このブログを検索
ブログアーカイブ
►
2020
(38)
6月 2020
(6)
5月 2020
(10)
4月 2020
(10)
3月 2020
(4)
2月 2020
(5)
1月 2020
(3)
►
2019
(4)
1月 2019
(4)
►
2018
(23)
12月 2018
(3)
4月 2018
(11)
3月 2018
(9)
►
2014
(20)
7月 2014
(3)
1月 2014
(17)
▼
2013
(166)
12月 2013
(15)
11月 2013
(22)
10月 2013
(31)
9月 2013
(26)
8月 2013
(32)
7月 2013
(40)
今週の人気の記事
【考察】シンカリオン 名前の由来を考察 -運転士編-
【MySQL】文字列をバイト数で切り取る
【まとめ】GWはおうちでぬりえ 鉄道会社公式の電車ぬりえをまとめた
【まとめ】おうちでペーパークラフト 鉄道会社公式のペーパークラフトをまとめた
【考察】シンカリオン 名前の由来を考察 -キトラルザス編-
フォロワー
On Your Mark
QooQ
0 件のコメント:
コメントを投稿