Uczę się wzorców projektowych Java GoF i chcę zobaczyć ich przykłady z życia. Jakie są dobre przykłady wzorców projektowych w podstawowych bibliotekach Java?
java
oop
design-patterns
java-api
unj2
źródło
źródło
javax.lang.model.element
określa odwiedzających;) Nie jestem do końca pewien, czydoXXX
idoFilter
są „strategiami”.Observable
,Observer
)ContainerAdapter
,ComponentAdapter
,FocusAdapter
,KeyAdapter
,MouseAdapter
to nie adaptery; w rzeczywistości są to obiekty zerowe. Zły wybór nazewnictwa przez Sun.BufferedInputStream
może ozdobić inne strumienie, takie jakFilterInputStream
)java.lang.Runtime#getRuntime()
jest SingletonButtonGroup
dla wzoru MediatorAction
,AbstractAction
może być używany do różnych prezentacji wizualnych w celu wykonania tego samego kodu -> Wzorzec poleceńi wiele innych
źródło
clone()
że w tym celu można zastosować metodę.źródło
java.awt
ijava.swing
pakiety. Rzeczywiście, mają one prawie identyczne wewnętrzne atrybuty, a zewnętrzne atrybuty są różnymi składnikami interfejsu użytkownika, które układają w formie interfejsu użytkownika.RMI opiera się na Proxy.
Powinno być możliwe zacytowanie jednego z większości 23 wzorów w GoF:
Nie mogę wymyślić przykładów w Javie dla 10 z 23, ale jutro zobaczę, czy dam radę. Po to jest edycja.
źródło
Wzór Abstract Factory jest używany w różnych miejscach. Na przykład
DatagramSocketImplFactory
,PreferencesFactory
. Istnieje wiele innych --- przeszukaj Javadoc w poszukiwaniu interfejsów, które mają w nazwie słowo „Factory”.Jest też kilka przykładów wzorca fabrycznego.
źródło
Mimo tego, że jestem zepsuty, ten interfejs API Java XML bardzo często korzysta z Factory. Popatrz na to:
...i tak dalej i tak dalej.
Dodatkowo różne bufory (StringBuffer, ByteBuffer, StringBuilder) korzystają z Buildera.
źródło
java.util.Collection # Iterator jest dobrym przykładem metody fabrycznej. W zależności od konkretnej podklasy Collection, której używasz, utworzy ona implementację Iterator. Ponieważ zarówno superklasa Factory (kolekcja), jak i utworzony Iterator są interfejsami, czasami jest mylona z AbstractFactory. Większość przykładów AbstractFactory w przyjętej odpowiedzi (BalusC) to przykłady Factory , uproszczonej wersji Factory Method, która nie jest częścią oryginalnych wzorców GoF. W Facory hierarchia klas fabryki jest zwinięta, a fabryka używa innych środków, aby wybrać produkt do zwrotu.
Fabryka abstrakcyjna ma wiele metod fabrycznych, z których każda tworzy inny produkt. Produkty wytwarzane przez jedną fabrykę są przeznaczone do wspólnego użytku (drukarka i wkłady powinny być z tej samej (abstrakcyjnej) fabryki). Jak wspomniano w odpowiedziach powyżej, rodziny komponentów AWT GUI, różniących się między platformami, są tego przykładem (chociaż jego implementacja różni się od struktury opisanej w Gof).
źródło