Estoy aprendiendo los patrones de diseño de GoF Java y quiero ver algunos ejemplos de la vida real de ellos. ¿Cuáles son algunos buenos ejemplos de estos patrones de diseño en las bibliotecas principales de Java?
java
oop
design-patterns
java-api
unj2
fuente
fuente
javax.lang.model.element
define a los visitantes;) No estoy muy seguro de si sondoXXX
ydoFilter
son "estrategias".Observable
,Observer
)ContainerAdapter
,ComponentAdapter
,FocusAdapter
,KeyAdapter
,MouseAdapter
son no adaptadores; en realidad son objetos nulos. Mala elección de nombres por parte de Sun.BufferedInputStream
puede decorar otras secuencias comoFilterInputStream
)java.lang.Runtime#getRuntime()
es SingletonButtonGroup
para patrón de mediadorAction
,AbstractAction
se puede usar para diferentes representaciones visuales para ejecutar el mismo código -> Patrón de comandoy muchos más supongo
fuente
clone()
método g puede usarse para este propósitofuente
java.awt
yjava.swing
paquetes. 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.
fuente
El patrón Abstract Factory se usa en varios lugares. Por ejemplo,
DatagramSocketImplFactory
,PreferencesFactory
. Hay muchos más: busque en el Javadoc interfaces que tengan la palabra "Fábrica" en su nombre.También hay bastantes instancias del patrón Factory también.
fuente
Aunque estoy un poco roto con este, la API XML de Java usa mucho Factory. Quiero decir solo mira esto:
...y así sucesivamente y así sucesivamente.
Además, varios Buffers (StringBuffer, ByteBuffer, StringBuilder) usan Builder.
fuente
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).
fuente