回答:
ウィキペディアで多くのデザインパターンの概要を見つけることができます。また、GoFによってどのパターンが言及されているかも言及しています。ここではそれらをまとめて、Java SE APIとJava EE APIの両方で見られるパターン実装をできるだけ多く割り当てようとします。
javax.xml.parsers.DocumentBuilderFactory#newInstance()javax.xml.transform.TransformerFactory#newInstance()javax.xml.xpath.XPathFactory#newInstance()java.lang.StringBuilder#append() (非同期)java.lang.StringBuffer#append() (同期)java.nio.ByteBuffer#put()(これも上のCharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBufferおよびDoubleBuffer)javax.swing.GroupLayout.Group#addComponent()java.lang.Appendablejava.util.stream.Stream.Builderjava.util.Calendar#getInstance()java.util.ResourceBundle#getBundle()java.text.NumberFormat#getInstance()java.nio.charset.Charset#forName()java.net.URLStreamHandlerFactory#createURLStreamHandler(String) (プロトコルごとにシングルトンオブジェクトを返します)java.util.EnumSet#of()javax.xml.bind.JAXBContext#createMarshaller() および他の同様の方法java.lang.Object#clone()(クラスは実装する必要がありますjava.lang.Cloneable)java.util.Arrays#asList()java.util.Collections#list()java.util.Collections#enumeration()java.io.InputStreamReader(InputStream)(を返すReader)java.io.OutputStreamWriter(OutputStream)(を返すWriter)javax.xml.bind.annotation.adapters.XmlAdapter#marshal() そして #unmarshal()new LinkedHashMap(LinkedHashSet<K>, List<V>)、アイテムのクローンを作成せずにそれらを使用する変更不可能なリンクマップを返します。java.util.Collections#newSetFromMap()およびsingletonXXX()方法は、しかし近づきます。java.awt.Container#add(Component) (したがって、実質的にSwing全体で)javax.faces.component.UIComponent#getChildren() (したがって、実質的にJSF UI全体で)java.io.InputStream、OutputStream、ReaderとWriter同じタイプのインスタンスを取るコンストラクタを持っています。java.util.Collections、checkedXXX()、synchronizedXXX()およびunmodifiableXXX()方法。javax.servlet.http.HttpServletRequestWrapper そして HttpServletResponseWrapperjavax.swing.JScrollPanejavax.faces.context.FacesContext、それは内部的に他の人の間で抽象/インターフェイスタイプ使用していますLifeCycle、ViewHandler、NavigationHandlerエンドユーザーは、注射(但しoverrideableある)それを心配する持っていることをせずに、より多くの。javax.faces.context.ExternalContext、内部的に使用するServletContext、HttpSession、HttpServletRequest、HttpServletResponse、などjava.lang.reflect.Proxyjava.rmi.*javax.ejb.EJB(説明はこちら)javax.inject.Inject(説明はこちら)javax.persistence.PersistenceContextjava.lang.Runnablejavax.swing.Actionjava.util.Patternjava.text.Normalizerjava.text.Formatjavax.el.ELResolverjava.util.Iterator(このため、とりわけjava.util.Scanner!)。java.util.Enumerationjava.util.Timer(すべてのscheduleXXX()方法)java.util.concurrent.Executor#execute()java.util.concurrent.ExecutorService(invokeXXX()とsubmit()メソッド)java.util.concurrent.ScheduledExecutorService(すべてのscheduleXXX()方法)java.lang.reflect.Method#invoke()java.util.Date(セッターメソッドはそれを行い、Date内部的にlong値で表されます)java.io.Serializablejavax.faces.component.StateHolderjava.util.Observer/ java.util.Observable(実際にはめったに使用されません)java.util.EventListener(したがって、実質的にSwing全体で)javax.servlet.http.HttpSessionBindingListenerjavax.servlet.http.HttpSessionAttributeListenerjavax.faces.event.PhaseListenerjavax.faces.lifecycle.LifeCycle#execute()(によって制御されFacesServlet、動作はJSFライフサイクルの現在のフェーズ(状態)に依存します)java.util.Comparator#compare()、とりわけによって実行されますCollections#sort()。javax.servlet.http.HttpServlet、service()およびすべてのdoXXX()メソッドはHttpServletRequestand HttpServletResponseを使用し、実装者はそれらを処理する必要があります(インスタンス変数として取得しないでください!)。javax.servlet.Filter#doFilter()java.io.InputStream、java.io.OutputStream、java.io.Readerとjava.io.Writer。java.util.AbstractList、java.util.AbstractSetとjava.util.AbstractMap。javax.servlet.http.HttpServlet、すべてのdoXXX()メソッドは、デフォルトでHTTP 405 "Method Not Allowed"エラーを応答に送信します。何も実装することも、それらを実装することも自由です。Observable、Observer)ContainerAdapter、ComponentAdapter、FocusAdapter、KeyAdapter、MouseAdapterありませんアダプター。それらは実際にはNullオブジェクトです。Sunによる不適切なネーミングの選択。BufferedInputStreamなどの他のストリームを装飾できますFilterInputStream)java.lang.Runtime#getRuntime() シングルトンですButtonGroup メディエーターパターンAction、 AbstractAction異なるコードで同じコードを実行するために使用できます->コマンドパターンそして私は推測するより多く
clone()、この目的にはメソッドを使用できると思います。java.awtとjava.swingパッケージのレイアウトマネージャーが異なる場合があります。実際、これらはほぼ同じ組み込み属性を共有し、外部属性はUIフォームでレイアウトする異なるUIコンポーネントです。
RMIはプロキシに基づいています。
GoFの23のパターンのほとんどを引用できるはずです。
23のうち10のJavaの例を考えることはできませんが、明日はもっとうまくできるかどうかを確認します。それが編集の目的です。
私はこれでちょっと壊れた時計ですが、Java XML APIはFactoryをよく使用します。これを見てください:
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(source);
String title = XPathFactory.newInstance().newXPath().evaluate("//title", doc);
...などなど。
さらに、さまざまなバッファー(StringBuffer、ByteBuffer、StringBuilder)はビルダーを使用します。
java.util.Collection#Iteratorは、ファクトリメソッドの良い例です。使用するコレクションの具象サブクラスに応じて、イテレーター実装が作成されます。Factoryスーパークラス(コレクション)と作成されたイテレーターの両方がインターフェースであるため、AbstractFactoryと混同される場合があります。受け入れ答え(BalusC)でAbstractFactoryの例のほとんどは、の例である工場、オリジナルのGoFパターンの一部ではないファクトリメソッドの簡易版。Facoryでは、Factoryクラス階層が縮小され、ファクトリーは他の手段を使用して、返される製品を選択します。
抽象ファクトリには複数のファクトリメソッドがあり、それぞれが異なる製品を作成します。1つの工場で生産された製品は、一緒に使用することを目的としています(プリンターとカートリッジは同じ(抽象的な)工場のものを使用することをお勧めします)。上記の回答で述べたように、AWT GUIコンポーネントのファミリーは、プラットフォームごとに異なります(ただし、その実装はGofで説明されている構造とは異なります)。
javax.lang.model.element訪問者を定義しています。)私はかなり確実かどうかじゃないdoXXXとdoFilter「戦略」です。