振る舞いに関するパターン(Behavioral Patterns)
イベントの送受信を行う複数のオブジェクトを鎖状につなぎ、それらの間をイベントが渡されてゆくようにする。
Uses in Java
● java.util.logging.Logger#log()
● javax.servlet.Filter#doFilter()
別名:Action, Undo-Redo
複数の異なる操作について、それぞれに対応するオブジェクトを用意し、オブジェクトを切り替えることで操作の切替えを実現する。
Uses in Java
● java.lang.Runnable
● javax.swing.Action
構文解析のために、文法規則を反映するクラス構造を作る。
Uses in Java
● java.util.Pattern
● java.text.Normalizer
● java.text.Format
複数の要素を内包するオブジェクトのすべての要素に順にアクセスする方法を提供する。
Uses in Program
● foreach
Uses in Java
● java.util.Iterator
● java.util.Enumeration
Uses in C#
● LINQ
オブジェクト間の相互作用を仲介するオブジェクトを定義し、オブジェクト間の結合度を低くする。
Uses in Java
● java.util.Timer
● java.util.concurrent.Executor#execute()
● java.util.concurrent.ExecutorService#submit()
● java.lang.reflect.Method#invoke()
別名:Token
データ構造に対する一連の操作のそれぞれを記録しておき、以前の状態の復帰または操作の再現が行えるようにする。
Uses in Java
● java.util.Date
● java.io.Serializable
別名:Listener, Publish-subscribe
インスタンスの変化を他のインスタンスから監視できるようにする。
Uses in Design
● MVC
Uses in Java
● java.util.EventListener
● javax.servlet.http.HttpSessionBindingListener
● javax.servlet.http.HttpSessionAttributeListener
● javax.faces.event.PhaseListener
Uses in C#
● event
オブジェクトの状態を変化させることで、処理内容を変えられるようにする。
Uses in Java
● java.util.Iterator
● javax.faces.lifecycle.LifeCycle#execute()
別名:Policy
データ構造に対して適用する一連のアルゴリズムをカプセル化し、アルゴリズムの切替えを容易にする。
Uses in Java
● java.util.Comparator#compare()
● javax.servlet.http.HttpServlet
● javax.servlet.Filter#doFilter()
あるアルゴリズムの途中経過で必要な処理を抽象メソッドに委ね、その実装を変えることで処理が変えられるようにする。
Uses in Java
● java.util.Collections#sort()
● java.io.InputStream#skip()
● java.io.InputStream#read()
● java.util.AbstractList#indexOf()
データ構造を保持するクラスと、それに対して処理を行うクラスを分離する。
Uses in Java
● javax.lang.model.element.Element
● javax.lang.model.element.ElementVisitor
● javax.lang.model.type.TypeMirror
● javax.lang.model.type.TypeVisitor