jdk 에서 사용 하 는 몇 가지 디자인 모델
단일 모드
하나의 인 스 턴 스 만 만 들 고 대상 에 게 전역 접근 점 을 제공 하도록 확보 합 니 다.
예 를 들 면:
private static Runtime currentRuntime = new Runtime();
public static Runtime getRuntime() {
return currentRuntime;
}
/**
* Returns the Desktop
instance of the current
* browser context. On some platforms the Desktop API may not be
* supported; use the {@link #isDesktopSupported} method to
* determine if the current desktop is supported.
* @return the Desktop instance of the current browser context
* @throws HeadlessException if {@link
* GraphicsEnvironment#isHeadless()} returns {@code true}
* @throws UnsupportedOperationException if this class is not
* supported on the current platform
* @see #isDesktopSupported()
* @see java.awt.GraphicsEnvironment#isHeadless
*/
public static synchronized Desktop getDesktop(){
if (GraphicsEnvironment.isHeadless()) throw new HeadlessException();
if (!Desktop.isDesktopSupported()) {
throw new UnsupportedOperationException("Desktop API is not " +
"supported on the current platform");
}
sun.awt.AppContext context = sun.awt.AppContext.getAppContext();
Desktop desktop = (Desktop)context.get(Desktop.class);
if (desktop == null) {
desktop = new Desktop();
context.put(Desktop.class, desktop);
}
return desktop;
}
공장 모드
실제 논 리 를 클 라 이언 트 에 노출 시 키 지 않 고 공공 인 터 페 이 스 를 통 해 새로 만 든 대상 을 참조 합 니 다.
예 를 들 면:
추상 공장
클래스 를 명시 적 으로 지정 하지 않 고 관련 대상 을 만 드 는 데 사용 할 인 터 페 이 스 를 제공 합 니 다.우 리 는 그것 이 공장 모델 의 더욱 높 은 차원 의 추상 이 라 고 간단하게 말 할 수 있다.
예 를 들 면:
관찰자 모드
대상 간 의 다 중 의존 관 계 를 정의 하고 도시락 대상 이 상 태 를 변경 할 때 모든 의존 항목 을 자동 으로 알 리 고 업데이트 합 니 다.
예 를 들 면:
구조 자 모드
대상 을 만 드 는 데 사용 할 인 스 턴 스 를 정의 하지만 하위 클래스 가 어떤 종 류 를 예화 할 지 결정 하고 구조 과정 을 잘 제어 할 수 있 도록 합 니 다.가장 간단 한 구축 기 는 공장 모델 과 유사 하 다 고 할 수 있 습 니 다. Builder 는 생 성 대상 의 옵션 을 제공 할 수 있 습 니 다.
예 를 들 면:
프로 토 타 입 인 스 턴 스 를 사용 하여 만 들 대상 형식 을 지정 하고 이 프로 토 타 입 을 복사 하여 새 대상 을 만 듭 니 다.
예 를 들 면:
그것 은 요청 한 발송 자 를 수신 자 에 게 추가 하 는 것 을 피하 고 다른 대상 도 요청 을 처리 할 수 있 게 한다.
대상 은 체인 의 일부분 이 되 어 한 대상 에서 다른 대상 으로 보 내 고 그 중의 한 대상 이 처리 할 때 까지 요청 합 니 다.
예 를 들 면:
다음으로 전송:https://juejin.im/post/5cbfdb406fb9a0322c428f2c
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.