Yabu.log

ITなどの雑記

接合部と許容点

接合部

接合部(seam)とは、その場所を直接編集しなくても、プログラムの振る舞いを買えることのできる場所である。

許容点

どの接合部も許容点(enabling point)を持つ。許容店では、どの振る舞いを使うかを決定できる

プリプロセッサ接合部

プロプロセッサ指令をサポートしている言語では コンパイル時にプログラムの振舞を買えることが出来る。

例:includeしたファイルの先のプリプロセッサ指令の中で、プログラム中の処理を再定義する

この場合、接合部はincludeしたファイルの中身になる。

リンク接合部

コンパイラが出力した中間表現の参照関係を変える。 Javaの場合、CLASSPATH環境変数を使ってリンカがクラスを探す場所をスタブ関数を持つライブラリ等に変える

この場合接合部はCLASSPATH環境変数になる。

オブジェクト接合部

オブジェクト指向を駆使して振る舞いを変える。

例:インスタンスメソッドの振る舞いを買えたい。 →インスタンスの型を抽象化し(interfaceを利用)引数等で外部から具象クラスを与えるようにする。

この場合、接合部は具象クラスを受け取る引数になる。

※他にもサブクラスで振る舞いを変える方法などもある。

注意事項

プロプロセッサ接合部とリンク接合部は強力だが保守が困難。 できるだけオブジェクト接合部を使う前提で考えたい。

参考:例レガシーコード改善ガイド第4章