답변:
Wikipedia 에서 많은 디자인 패턴에 대한 개요를 찾을 수 있습니다 . 또한 GoF에서 언급 한 패턴을 언급합니다. 여기에 그것들을 요약하고 Java SE 및 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) (실제로 스윙 전체에)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최종 사용자가 걱정하지 않아도됩니다 (그러나 주입으로 재정의 할 수 있음).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()메소드가 수행 HttpServletRequest하고 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.HttpServletdoXXX()기본적으로 모든 메소드는 HTTP 405 "Method Not Allowed"오류를 응답으로 보냅니다. 당신은 그들 중 어느 것도 또는 자유롭게 구현할 수 없습니다.Observable, Observer)ContainerAdapter, ComponentAdapter, FocusAdapter, KeyAdapter, MouseAdapter입니다 하지 어댑터; 그것들은 실제로 널 오브젝트입니다. 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)는 Builder를 사용합니다.
java.util.Collection # Iterator는 팩토리 메소드의 좋은 예입니다. 사용하는 Collection의 구체적 서브 클래스에 따라 Iterator 구현이 작성됩니다. Factory 슈퍼 클래스 (Collection)와 생성 된 Iterator는 모두 인터페이스이기 때문에 때때로 AbstractFactory와 혼동됩니다. 허용 된 답변 (BalusC)에서 AbstractFactory에 대한 대부분의 예제는 Factory Go의 패턴이 아닌 Factory Method의 단순화 된 버전 인 Factory의 예제입니다 . Facory에서 팩토리 클래스 계층 구조가 축소되고 팩토리는 다른 방법을 사용하여 반품 할 제품을 선택합니다.
추상 팩토리에는 각각 다른 제품을 생성하는 여러 팩토리 메소드가 있습니다. 한 공장에서 생산 된 제품은 함께 사용하도록 고안되었습니다 (프린터와 카트리지는 동일한 (추상) 공장에서 제조하는 것이 좋습니다). 위의 답변에서 언급했듯이 플랫폼마다 다른 AWT GUI 구성 요소 제품군은 이에 대한 예입니다 (구현 방법은 Gof에 설명 된 구조와 다릅니다).
javax.lang.model.element방문자를 정의) 나는 확실히인지 확실하지 않다doXXX과doFilter"전략"입니다.