
268
7
章
最小知識の原則
この指針によって、その他のメソッド呼び
出しが返すオブジェクトのメソッドを呼び
出さないようにします。
「コンポーネント」とは、インスタンス変数が
参照するオブジェクトと考えましょう。言い換
えれば、これは
HAS-A
(〜を持つ)関係です。
しかし、友達を作らずオブジェクトに影響を与えないなんてこと
ができるのでしょうか?
この原則は、いくつかの指針を示していま
す。この原則に従えば、任意のオブジェクトのメソッドのうち、以
下に属するメソッドだけを呼び出すべきだということになります。
●
そのオブジェクト自身
●
メソッドの引数として渡されたオブジェクト
●
メソッドが作成またはインスタンス化するオブジェクト
●
そのオブジェクトのコンポーネント
これは少し厳しいと思いませんか?
他の呼び出しが返すオブジェ
クトのメソッドを呼び出すと、どのような悪影響があるでしょうか?
他の呼び出しが返すオブジェクトのメソッドを呼び出すと、他のオ
ブジェクトの下位部分を要求することになります(そして、直接知っ
ているオブジェクトの数を増やすことになります)。このような場合、
この原則ではそのオブジェクトに要求を行わせます。そうすれば、
そのオブジェクトのコンポーネントオブジェクトについて知る必要
はありません(そして、友達の輪を少数に保ちます)。例を示します。
友達を作らずオブジェクトに影響を与えない方法
public float getTemp() {
Thermometer thermometer = station.getThermometer(); ...