Respuestas:
Puede encontrar una descripción general de muchos patrones de diseño en Wikipedia . También menciona qué patrones son mencionados por GoF. Los resumiré aquí e intentaré asignar tantas implementaciones de patrones como sea posible, que se encuentran en las API Java SE y Java EE.
javax.xml.parsers.DocumentBuilderFactory#newInstance()javax.xml.transform.TransformerFactory#newInstance()javax.xml.xpath.XPathFactory#newInstance()java.lang.StringBuilder#append() (no sincronizado)java.lang.StringBuffer#append() (sincronizado)java.nio.ByteBuffer#put()(también en CharBuffer, ShortBuffer, IntBuffer, LongBuffer, FloatBuffery 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) (Devuelve objeto singleton por protocolo)java.util.EnumSet#of()javax.xml.bind.JAXBContext#createMarshaller() y otros métodos similaresjava.lang.Object#clone()(la clase tiene que implementar java.lang.Cloneable)java.util.Arrays#asList()java.util.Collections#list()java.util.Collections#enumeration()java.io.InputStreamReader(InputStream)(devuelve a Reader)java.io.OutputStreamWriter(OutputStream)(devuelve a Writer)javax.xml.bind.annotation.adapters.XmlAdapter#marshal() y #unmarshal()new LinkedHashMap(LinkedHashSet<K>, List<V>)que devuelve un mapa vinculado no modificable que no clona los elementos, sino que los usa . El java.util.Collections#newSetFromMap()y singletonXXX()métodos, sin embargo se le acerca.java.awt.Container#add(Component) (prácticamente en todo Swing así)javax.faces.component.UIComponent#getChildren() (prácticamente en toda la interfaz de usuario JSF)java.io.InputStream, OutputStream, Readery Writertienen un constructor teniendo una instancia del mismo tipo.java.util.Collections, el checkedXXX(), synchronizedXXX()y los unmodifiableXXX()métodos.javax.servlet.http.HttpServletRequestWrapper y HttpServletResponseWrapperjavax.swing.JScrollPanejavax.faces.context.FacesContext, Que utiliza internamente entre otros los tipos de interfaz / abstractos LifeCycle, ViewHandler, NavigationHandlery muchos más, sin que el usuario final tiene que preocuparse por ello (que son sin embargo overrideable por inyección).javax.faces.context.ExternalContext, Que utiliza internamente ServletContext, HttpSession, HttpServletRequest, HttpServletResponse, etc.java.lang.Integer#valueOf(int)(también en Boolean, Byte, Character, Short, Longy BigDecimal)java.lang.reflect.Proxyjava.rmi.*javax.ejb.EJB( explicación aquí )javax.inject.Inject( explicación aquí )javax.persistence.PersistenceContextjava.lang.Runnablejavax.swing.Actionjava.util.Patternjava.text.Normalizerjava.text.Formatjavax.el.ELResolverjava.util.Iterator(¡y entre otras también java.util.Scanner!).java.util.Enumerationjava.util.Timer(todos los scheduleXXX()métodos)java.util.concurrent.Executor#execute()java.util.concurrent.ExecutorService(los invokeXXX()y submit()métodos)java.util.concurrent.ScheduledExecutorService(todos los scheduleXXX()métodos)java.lang.reflect.Method#invoke()java.util.Date(los métodos de establecimiento hacen eso, Dateestá representado internamente por un longvalor)java.io.Serializablejavax.faces.component.StateHolderjava.util.Observer/ java.util.Observable(aunque rara vez se usa en el mundo real)java.util.EventListener(prácticamente en todo Swing)javax.servlet.http.HttpSessionBindingListenerjavax.servlet.http.HttpSessionAttributeListenerjavax.faces.event.PhaseListenerjavax.faces.lifecycle.LifeCycle#execute()(controlado por FacesServlet, el comportamiento depende de la fase actual (estado) del ciclo de vida de JSF)java.util.Comparator#compare(), ejecutado por entre otros Collections#sort().javax.servlet.http.HttpServlet, los métodos service()y todos doXXX()toman HttpServletRequesty HttpServletResponsey el implementador tiene que procesarlos (¡y no obtenerlos como variables de instancia!).javax.servlet.Filter#doFilter()java.io.InputStream, java.io.OutputStream, java.io.Readery java.io.Writer.java.util.AbstractList, java.util.AbstractSety java.util.AbstractMap.javax.servlet.http.HttpServlet, todos los doXXX()métodos de forma predeterminada envían un error HTTP 405 "Método no permitido" a la respuesta. Eres libre de implementar ninguno o ninguno de ellos.Observable, Observer)ContainerAdapter, ComponentAdapter, FocusAdapter, KeyAdapter, MouseAdapterson no adaptadores; en realidad son objetos nulos. Mala elección de nombres por parte de Sun.BufferedInputStreampuede decorar otras secuencias como FilterInputStream)java.lang.Runtime#getRuntime() es SingletonButtonGroup para patrón de mediadorAction, AbstractActionse puede usar para diferentes representaciones visuales para ejecutar el mismo código -> Patrón de comandoy muchos más supongo
clone()método g puede usarse para este propósitojava.awty java.swingpaquetes. De hecho, comparten atributos intrínsecos casi idénticos y los atributos extrínsecos son diferentes componentes de la interfaz de usuario que presentan en forma de interfaz de usuario.
RMI se basa en Proxy.
Debería ser posible citar uno para la mayoría de los 23 patrones en GoF:
No puedo pensar en ejemplos en Java para 10 de los 23, pero veré si puedo hacerlo mejor mañana. Para eso está la edición.
Aunque estoy un poco roto con este, la API XML de Java usa mucho Factory. Quiero decir solo mira esto:
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(source);
String title = XPathFactory.newInstance().newXPath().evaluate("//title", doc);
...y así sucesivamente y así sucesivamente.
Además, varios Buffers (StringBuffer, ByteBuffer, StringBuilder) usan Builder.
java.util.Collection # Iterator es un buen ejemplo de un método de fábrica. Dependiendo de la subclase concreta de Colección que use, creará una implementación de Iterator. Debido a que tanto la superclase de Factory (Collection) como el Iterator creados son interfaces, a veces se confunde con AbstractFactory. La mayoría de los ejemplos de AbstractFactory en la respuesta aceptada (BalusC) son ejemplos de Factory , una versión simplificada de Factory Method, que no forma parte de los patrones originales de GoF. En Facory, la jerarquía de clases de Factory se contrae y la fábrica utiliza otros medios para elegir el producto que se devolverá.
Una fábrica abstracta tiene múltiples métodos de fábrica, cada uno creando un producto diferente. Los productos producidos por una fábrica están diseñados para usarse juntos (es mejor que su impresora y cartuchos sean de la misma fábrica (abstracta)). Como se menciona en las respuestas anteriores, las familias de componentes de AWT GUI, que difieren de una plataforma a otra, son un ejemplo de esto (aunque su implementación difiere de la estructura descrita en Gof).
javax.lang.model.elementdefine a los visitantes;) No estoy muy seguro de si sondoXXXydoFilterson "estrategias".