構造に関するデザインパターン
構造に関するデザインパターンは、 構造の柔軟性と効率を維持しつつ、 オブジェクトとクラスを大きな構造に束ねる方法を説明します。
![Adapter](/images/patterns/cards/adapter-mini.png?id=b2ee4f681fb589be5a0685b94692aebb)
非互換なインターフェースのオブジェクト同士の協働を可能とします。
![Bridge](/images/patterns/cards/bridge-mini.png?id=b389101d8ee8e23ffa1b534c704d0774)
巨大なクラスや密接に関連したクラスの集まりを、 抽象部分と実装部分の二つの階層に分離し、 それぞれが独立して開発できるようにします。
![Composite](/images/patterns/cards/composite-mini.png?id=a369d98d18b417f255d04568fd0131b8)
オブジェクトからツリー構造を組み立て、 その木構造がまるで独立したオブジェクトであるかのように扱えるようにします。
![Decorator](/images/patterns/cards/decorator-mini.png?id=d30458908e315af195cb183bc52dbef9)
ある振る舞いを含む特別なラッパー・オブジェクトの中にオブジェクトを配置することで、 それらのオブジェクトに新しい振る舞いを付け加えます。
![Facade](/images/patterns/cards/facade-mini.png?id=71ad6fa98b168c11cb3a1a9517dedf78)
ライブラリー、 フレームワーク、 その他のクラスの複雑な組み合わせに対し、 簡素化されたインターフェースを提供します。
![Flyweight](/images/patterns/cards/flyweight-mini.png?id=422ca8d2f90614dce810a8812c626698)
複数のオブジェクト間で共通する部分を各自で持つ代わりに共有することによって、 利用可能な RAM により多くのオブジェクトを収められるようにします。
![Proxy](/images/patterns/cards/proxy-mini.png?id=25890b11e7dc5af29625ccd0678b63a8)
他のオブジェクトの代理、 代用を提供します。 プロキシーは、 元のオブジェクトへのアクセスを制御し、 元のオブジェクトへリクエストが行く前か後に別の何かを行うようにすることができます。