呼ばれているもので実装される。オブジェクトから各メソッドの戻り値を取得できる。(継承と委譲)1990年代初期は、継承によって差分プログラミングできると信じられていた。1995年には、継承の乱用の欠点が明らかになった。「クラスの継承よりオブジェクトのコンポジションを使え」というまでになった。パターンは委譲を使って問題を解決する。パターンでは汎用的なアルゴリズムを抽象クラスで実装し、具体的な処理の内容を派生クラスで実装する。パターンでは汎用的なアルゴリズムを具象クラスで実装し、具体的な処理の内容はインタフェースに委譲する。パターンも上位レベルのアルゴリズムを再利用するパターン。パターンには下位レベルの実装の詳細を再利用できるという利点がある。上位クラス(アルゴリズム部分)が下位クラス(実装の詳細)が継承という強い関係で結ばれてしまう。下位クラスの実装から上位クラスのメソッドを利用していないとしても、継承関係にある限り切り離せない。完全に準拠している)。パターンに比べ、クラスの数が多く、間接参照が多い(メモリ、実行時間のコストがかかる)。多くの場合、これはほとんど問題にならない。パターンを採用すべし。パターンもある種の方針をオブジェクトに強制する。パターンは上から方針を制約する。その方針は視覚的に捉えられる。パターンは下から方針を制約する。その方針は視覚的には捉えられない。利用することに同意しなければならないことを暗に意味する。パターンを利用できる。下に隠されたライブラリに直接アクセスしないように約束する必要がある。パターンでは、クライアントコードに見える形で方針が課される。経由でメソッドを呼び出さないといけないというルールが必須。オブジェクトを作成した時点でオブジェクト間の方針が課される。実装によって隠蔽される。オブジェクトを作成するだけ。あとは、クライアントコードには見えない形で方針が課される。インスタンスが複数生成されないような「構造」である。すべてのオブジェクトが同じ「振る舞い」をする。