構造に関するパターン(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