-
답변 # 1
-
답변 # 2
전체 스윙에 걸친 관찰자 패턴 (
javax.faces.component.visit.VisitContext
)VisitCallback
)MVC도 스윙 중
어댑터 패턴 : InputStreamReader 및 OutputStreamWriter 참고 :
Observable
Observer
ContainerAdapter
ComponentAdapter
FocusAdapter
어댑터가 아님;그것들은 실제로 널 오브젝트입니다. Sun의 이름 지정이 잘못되었습니다.데코레이터 패턴 (
KeyAdapter
MouseAdapter
와 같은 다른 스트림을 장식 할 수 있습니다 )AWT 툴킷 및 스윙 플러그 가능 룩앤필 클래스에 대한 AbstractFactory 패턴
BufferedInputStream
싱글턴입니다FilterInputStream
중재자 패턴의 경우java.lang.Runtime#getRuntime()
ButtonGroup
동일한 코드를 실행하기 위해 다른 시각적 표현에 사용될 수 있습니다->명령 패턴Flyweight 패턴을위한 JTable의 인턴 드 문자열 또는 CellRender (다양한 풀 (스레드 풀, 연결 풀, EJB 객체 풀-Flyweight는 실제로 공유 자원 관리에 관한 것)에 대해 생각합니다.
자바 1.0과 같은 Java 1.0 이벤트 모델은 Chain of Responsibility의 예입니다.
컬렉션 프레임 워크의 반복자 패턴
AWT/Swing의 컨테이너는 복합 패턴을 사용합니다
AWT/Swing의 레이아웃 관리자는 전략의 예입니다
그리고 더 많은 것 같아요
-
답변 # 3
Flyweight는 Byte, Short, Integer, Long 및 String의 일부 값과 함께 사용됩니다.
파사드는 여러 곳에서 사용되지만 가장 확실한 것은 스크립팅 인터페이스입니다.
싱글턴-java.lang. 런타임이 떠 오릅니다.
추상 팩토리-스크립팅 및 JDBC API
명령-TextComponent의 실행 취소/다시 실행
통역사-RegEx (java.util.regex.) 및 SQL (java.sql.) API
시제품-이 숫자가 100 % 확실하지는 않지만
Action
이 방법으로이 방법을 사용할 수 있습니다. -
답변 # 4
RMI는 프록시를 기반으로합니다.
GoF에서 23 가지 패턴 중 하나를 인용 할 수 있을까요?
<올>Abstract Factory : java.sql 인터페이스는 드라이버가 등록 될 때 JDBC JAR에서 구체적으로 구현됩니다.
빌더 : java.lang.StringBuilder.
공장 방법 : 무엇보다도 XML 팩토리.
시제품 : 아마도 clone () 일지 모르겠지만 확실하지 않습니다
싱글 톤 : java.lang.System
어댑터 : java.awt.event의 어댑터 클래스 (예 : WindowAdapter)
브리지 : java.util의 컬렉션 클래스. ArrayList로 구현 된 목록
컴포지트 : java.awt. java.awt.Component + java.awt.Container
데코레이터 : 모든 java.io 패키지
Facade : ExternalContext는 쿠키, 세션 범위 및 유사한 작업을 수행하기위한 파사드로 동작합니다.
비행 : 정수, 문자 등
프록시 : java.rmi 패키지
책임의 차이 : 서블릿 필터
명령 : 스윙 메뉴 항목
통역사 : JDK에서는 직접 사용할 수 없지만 JavaCC는이를 사용합니다.
반복자 : java.util.Iterator 인터페이스;그보다 더 명확 할 수는 없습니다.
중개자 : JMS?
Memento :
관찰자 : java.util.Observer/Observable (잘 못하지만)
주 :
전략 :
템플릿 :
방문자 :
23 개 중 10 개에 대한 Java 예제는 생각할 수 없지만 내일 더 잘할 수 있는지 살펴 보겠습니다. 그것이 편집의 목적입니다.
-
답변 # 5
Abstract Factory 패턴은 다양한 장소에서 사용됩니다. 예 :
AbstractAction
clone()
. 이름에 "Factory"라는 단어가있는 인터페이스에 대해 Javadoc을 검색하는 방법이 많이 있습니다.또한 팩토리 패턴의 인스턴스도 상당히 많습니다.
DatagramSocketImplFactory
관련 자료
- function - 종속 순차 검증을위한 디자인 패턴
- python - 여러 기능 출력을위한 우수한 디자인 패턴
- architecture - TDD 및 DDD 아키텍처 패턴 또는 디자인 패턴입니까?
- Julia의 Flyweight/OOP 디자인 패턴
- 소프트웨어의 재사용 성을 높이는 데 더 중점을 둔 디자인 패턴은 무엇입니까?
- fpga - Pre-Synthesis/Post-Synthesis에서 ModelSim으로 VHDL 설계를 시뮬레이션 할 때 조건부 라이브러리 사용
- java - 데코레이터 디자인 및 공장 디자인 패턴
- c# - 좋은 소프트웨어 디자인 패턴, 단위 테스트를위한 생성자 과부하
- 실행 패턴의 예
- 디자인 패턴과 스칼라
- Java의 디자인 패턴 및 OOP 원칙
- 라 라벨 디자인 패턴
- Broker는 디자인 패턴이며 Gamma et al의 Design Patterns에 언급되어 있습니까?
- oop - Java의 "스캐너"방법과 Facade GoF 디자인 패턴
- node.js - nestjs + typorm 디자인 패턴 - 리졸버 대 서비스
- 자바 상속 및 디자인 패턴 조언
- java - 종속성 반전 설계 선택 질문
- java - 동일한 패키지의 다른 클래스에있는 중첩 클래스에 액세스
- java - 다른 선 형식으로 txt를 읽고 개체를 만드시겠습니까?
- oop - 변수가 기본 인스턴스 변수 인 경우 Java에서 this 키워드의 요점은 무엇입니까?
- java - 확장 클래스에 대한 계산을 구현하는 좋은 방법은 무엇입니까?
- oop - Iterator에 따라 Method를 ArrayList 또는 Alternatives (Java)에 종속되도록 변경
- oop - Java에서 유형을 정의하기 위해 두 개의 다른 인터페이스를 확장하는 인터페이스를 만드는 방법
- oop - Java가 하위 클래스를 선언하고 있음을 인식하지 못하고 멤버 메서드를 찾을 수 없습니다
- file - Java에서 직렬화 된 객체를 어떻게 삭제할 수 있습니까?
- oop - JAVA에서 이것을 사용하여 ENUM 클래스 함수 내에서 ENUM의 값을 변경하십시오
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.Appendable
의 모든 구현java.util.stream.Stream.Builder
java.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.lang.Runtime#getRuntime()
java.awt.Desktop#getDesktop()
java.lang.System#getSecurityManager()
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)
(실제로 JSF UI 전체에서)javax.faces.component.UIComponent#getChildren()
의 모든 서브 클래스java.io.InputStream
OutputStream
그리고Reader
동일한 유형의 인스턴스를 생성자가 생성합니다.Writer
java.util.Collections
checkedXXX()
그리고synchronizedXXX()
방법.unmodifiableXXX()
그리고javax.servlet.http.HttpServletRequestWrapper
HttpServletResponseWrapper
javax.swing.JScrollPane
내부적으로 추상/인터페이스 유형javax.faces.context.FacesContext
를 사용합니다.LifeCycle
ViewHandler
그리고 최종 사용자는 그것에 대해 걱정할 필요가 없습니다 (그러나 주입으로 무시할 수 있음).NavigationHandler
내부적으로javax.faces.context.ExternalContext
를 사용하는ServletContext
HttpSession
HttpServletRequest
등HttpServletResponse
(또한java.lang.Integer#valueOf(int)
에Boolean
Byte
Character
Short
그리고Long
)BigDecimal
java.lang.reflect.Proxy
java.rmi.*
(여기 설명)javax.ejb.EJB
(여기 설명)javax.inject.Inject
javax.persistence.PersistenceContext
java.util.logging.Logger#log()
javax.servlet.Filter#doFilter()
의 모든 구현java.lang.Runnable
의 모든 구현javax.swing.Action
java.util.Pattern
java.text.Normalizer
의 모든 서브 클래스java.text.Format
의 모든 서브 클래스 반복자(큐에서다른유형의 인스턴스를 순차적으로 반환하는 행동 방법으로 인식 가능)javax.el.ELResolver
의 모든 구현 (따라서 또한java.util.Iterator
!).java.util.Scanner
의 모든 구현java.util.Enumeration
(모든java.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.Serializable
/javax.faces.component.StateHolder
(실제로는 거의 사용되지 않음)java.util.Observer
의 모든 구현 (실제로 스윙 전체에서)java.util.Observable
java.util.EventListener
javax.servlet.http.HttpSessionBindingListener
javax.servlet.http.HttpSessionAttributeListener
(javax.faces.event.PhaseListener
에 의해 제어 됨 , 동작은 JSF 수명주기의 현재 단계 (상태)에 따라 다릅니다)javax.faces.lifecycle.LifeCycle#execute()
FacesServlet
에 의해 실행 .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
기본적으로 메소드는 HTTP 405 "Method Not Allowed"오류를 응답으로 보냅니다. 당신은 그들 중 어느 것도 자유롭게 구현할 수 없습니다.javax.servlet.http.HttpServlet
그리고doXXX()
javax.lang.model.element.AnnotationValue
그리고AnnotationValueVisitor
javax.lang.model.element.Element
그리고ElementVisitor
javax.lang.model.type.TypeMirror
그리고TypeVisitor
java.nio.file.FileVisitor
그리고SimpleFileVisitor