Estou aprendendo os padrões de design Java do GoF e quero ver alguns exemplos da vida real deles. Quais são alguns bons exemplos desses padrões de design nas principais bibliotecas do Java?
java
oop
design-patterns
java-api
unj2
fonte
fonte
javax.lang.model.element
define visitantes;) Não tenho certeza se sãodoXXX
oudoFilter
não "estratégias".Observable
,Observer
)ContainerAdapter
,ComponentAdapter
,FocusAdapter
,KeyAdapter
,MouseAdapter
são não adaptadores; eles são na verdade objetos nulos. Má escolha de nomes pelo sol.BufferedInputStream
pode decorar outros fluxos, comoFilterInputStream
)java.lang.Runtime#getRuntime()
é SingletonButtonGroup
para padrão MediadorAction
,AbstractAction
pode ser usado para diferentes representações visuais para executar o mesmo código -> Padrão de comandoe muito mais eu acho
fonte
clone()
método pode ser usado para esse fim.fonte
java.awt
ejava.swing
pacotes. Na verdade, eles compartilham atributos intrínsecos quase idênticos e atributos extrínsecos são componentes diferentes da interface do usuário que eles apresentam no formato da interface do usuário.O RMI é baseado em Proxy.
Deve ser possível citar um para a maioria dos 23 padrões no GoF:
Não consigo pensar em exemplos em Java para 10 dos 23, mas vou ver se posso fazer melhor amanhã. É para isso que serve a edição.
fonte
O padrão Abstract Factory é usado em vários lugares. Por exemplo,
DatagramSocketImplFactory
,PreferencesFactory
. Existem muitos outros --- pesquise no Javadoc interfaces que tenham a palavra "Factory" em seu nome.Também existem algumas instâncias do padrão Factory também.
fonte
Embora eu esteja meio que com um relógio quebrado, a API Java XML usa muito o Factory. Quero dizer, basta olhar para isso:
...e assim por diante.
Além disso, vários buffers (StringBuffer, ByteBuffer, StringBuilder) usam o Builder.
fonte
java.util.Collection # Iterator é um bom exemplo de um método de fábrica. Dependendo da subclasse concreta de Collection usada, ele criará uma implementação de Iterator. Como a superclasse Factory (Collection) e o Iterator criados são interfaces, às vezes é confundido com AbstractFactory. A maioria dos exemplos de AbstractFactory na resposta aceita (BalusC) são exemplos de Factory , uma versão simplificada do Factory Method, que não faz parte dos padrões GoF originais. No Facory, a hierarquia da classe Factory é reduzida e a fábrica usa outros meios para escolher o produto a ser devolvido.
Uma fábrica abstrata possui vários métodos de fábrica, cada um criando um produto diferente. Os produtos produzidos por uma fábrica devem ser usados juntos (é melhor que a impressora e os cartuchos sejam da mesma fábrica (abstrata)). Como mencionado nas respostas acima, as famílias de componentes da GUI do AWT, que diferem de plataforma para plataforma, são um exemplo disso (embora sua implementação seja diferente da estrutura descrita em Gof).
fonte