原文: http://www.martinfowler.com/eaaCatalog/gateway.html

外部のシステムやリソースへのアクセスをカプセル化するオブジェクト

解説の全文は『PofEAA』 466 ページを参照。

面白いソフトウェアは孤立していることがまれにある。最も純潔のオブジェクト指向システムでさえもリレーショナルデータベーステーブルや、CICSトランザクション、XMLデータ構造のような、オブジェクトではないものを扱うことがしばしばある。

このように外部リソースへアクセスする際、普通はそれ用のAPIを使うと思う。でもそんなAPIはそのリソースの性質が考慮されているので、自然と多少は複雑になる。あるリソースを理解する必要があれば、リレーショナルデータベース用のJDBCやSQL、XML用のW3CやJDOMなど、それ用のAPIを理解する必要がある。これは、ソフトウェアを理解するのが困難になるだけでなく、将来何かのタイミングでリレーショナルデータベースからXMLメッセージへシフトしなければならなくなったときに変更がとても困難になるのだ。

この答えはとても一般的なもので、触れるだけの価値は大いにある。その特別なAPIコードを通常のオブジェクトに見えるインタフェースを持ったあるクラスにラップするんだ。他のオブジェクトはこのゲートウェイを経由してそのリソースへアクセスする。そこでは、単純なメソッド呼び出しを適切な特別なAPIへ変換を行う。

履歴

  • translated by money(money@andore.com)

PofEAA index | パターンカタログの日本語版 | パターンカタログの英日対応表