構造に関するパターン(Structural Patterns)

別名:Wrapper

元々関連性のない2つのクラスを接続するクラスを作る。

Uses in Java

● java.util.Arrays#asList()

● javax.swing.JTable(TableModel)

● java.io.InputStreamReader(InputStream)

● java.io.OutputStreamWriter(OutputStream)

● javax.xml.bind.annotation.adapters.XmlAdapter#marshal()

● javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal()

クラスなどの実装と、呼出し側の間の橋渡しをするクラスを用意し、実装を隠蔽する。

Uses in Java

● AWT

● JDBC

再帰的な構造を表現する。

Uses in Java

● javax.swing.JComponent#add(Component)

● java.awt.Container#add(Component)

● java.util.Map#putAll(Map)

● java.util.List#addAll(Collection)

● java.util.Set#addAll(Collection)

Uses in C#

● ASP.NET WebForm#Page

● ASP.NET WebForm#Control

別名:Filter

あるインスタンスに対し、動的に付加機能を追加する。

Uses in Java

● java.io.BufferedInputStream(InputStream)

● java.io.DataInputStream(InputStream)

● java.io.BufferedOutputStream(OutputStream)

● java.util.zip.ZipOutputStream(OutputStream)

● java.util.Collections#checked[List|Map|Set|SortedSet|SortedMap]()

Uses in C#

● ASP.NET MVC#Action Filter

複数のサブシステムの窓口となる共通のインタフェースを提供する。

Uses in Java

● java.lang.Class

● javax.faces.webapp.FacesServlet

多数のインスタンスを共有し、インスタンスの構築のための負荷を減らす。

Uses in Java

● java.lang.Integer#valueOf(int)

● java.lang.Boolean#valueOf(boolean)

● java.lang.Byte#valueOf(byte)

● java.lang.Character#valueOf(char)

別名:Surrogate

共通のインタフェースをもつインスタンスを内包し、利用者からのアクセスを代理する。

Uses in Java

● java.lang.reflect.Proxy

● RMI