システムが大規模になるほど、あるいは優れた設計が施されたシステムほど、システムは高度にコンポーネント化される傾向にあります。例えばトランザクション管理、ロギング、コネクション・プーリングなど、機能単位でコンポーネント化されます。 さて、開発中のシステムの機能の一部を、あるコンポーネントを用いて実現していた際、性能上の理由などから、他のベンダより提供されている同じ機能をもったコンポーネントに切り替える必要が生じたとしましょう。しかし、提供元が異なるコンポーネントは、利用するためのAPI(一連のメソッド呼び出しなど)に互換性がないことがほとんどです。システムの構築は進行してしまっているので、コンポーネントを切り替えるにはコードを大幅に書き換える必要が生じます。このような問題に直面した場合の良い解決方法はないものでしょうか? デザインパターンは、こうした問題に直面したときに威力を発揮します。ここ