디자인 모드 노트

만 들 기 모드
 Singleton          JavaClass
 
     1.
 
       2.                   ,                        。
  Singleton         ,           ,   Javagarbage collection)。
 

public class Singleton {   private Singleton(){}     private static Singleton instance = new Singleton();   public static Singleton getInstance() {    return instance;      } }  
두 번 째 형식:
public class Singleton {   private static Singleton instance = null;public static synchronized Singleton getInstance(){//이 방법 은 위 보다 개선 되 었 습 니 다.매번 대상 을 만 들 지 않 고 첫 번 째//사용 시 인 스 턴 스 를 생 성하 여 효율 을 높 였 습 니 다!  if (instance==null)    instance=new Singleton();  return instance;   } }
        。。    

둘째,    공장 모드 Factory----창설 모드
왜 사용 합 니까?공장 모델 은 우리 가 가장 자주 사용 하 는 모델 이다.유명한 Jive 포럼 은 공장 모델 을 대량으로 사용 했다.공장 모델 은 자바 프로그램 시스템 에서 어디서나 볼 수 있다 고 할 수 있다.
왜 공장 모델 은 이렇게 자주 사용 합 니까?공장 모델 은 인 스 턴 스 대상 을 만 드 는 new 에 해당 하기 때문에 우 리 는 항상 클래스 Class 에 따라 인 스 턴 스 대상 을 생 성 해 야 합 니 다.예 를 들 어 A=new A()공장 모델 도 인 스 턴 스 대상 을 만 드 는 데 사용 되 기 때문에 앞으로 new 는 여러 가지 마음 을 가 져 야 합 니 다.실 용적 인 공장 모델 을 고려 할 수 있 습 니까?그럼 에 도 불구 하고 일 을 더 할 수 있 습 니 다.시스템 에 더 큰 확장 성과 가능 한 한 적은 수 정 량 을 가 져 다 줄 것 입 니 다.
1、     :   
              ,            。FactoryMethod

    1.만들어 야 할 대상 의 종 류 를 모 를 때.
    2.클래스 가 만 든 대상 을 하위 클래스 에서 지정 하고 싶 을 때.
    3.생 성 대상 의 직책 을 여러 개의 도움 하위 클래스 중 하나 에 맡 기 고 어떤 도움 하위 클래스 가 대리자 라 는 정 보 를 국부 화 하 기 를 원 할 때.
2.추상 공장
                     ,           。
        1.               、      。
        2.
        3.
        4.          ,                。
 
            

 
 
 
셋째,   원형 모드---생 성 모드
                  ,                。
Prototype                     ,               。
    :                     ,                             。
   
        1.                、      。
        2.                ,  ,      。
        3.
        4.
        5.       ,        ,            ,     new,         。
 
            
    ?   cloneableclone
 
 
           ----    
                   ,                  。
   1.
   2.

Builder 모드 는 한 걸음 한 걸음 복잡 한 대상 을 만 드 는 것 입 니 다.사용 자 는 복잡 한 대상 의 유형 과 내용 만 지정 하면 구축 할 수 있 습 니 다.사용 자 는 내부 의 구체 적 인 구축 디 테 일 을 모 릅 니 다.Builder 모드 는 추상 적 인 공장 모델 과 매우 유사 합 니 다.작은 차 이 는 반복 적 으로 사용 해 야 느 낄 수 있 습 니 다.
왜 사용 합 니까?복잡 한 대상 을 구축 하 는 과정 과 위 젯 의 결합 을 해제 하기 위해 서 입 니 다.주의:결합 해제 과정 과 위 젯 입 니 다.
복잡 한 대상 이 있 기 때문에 많은 구성 부분 이 있 습 니 다.예 를 들 어 자동차,많은 부품 이 있 습 니 다.바퀴 핸들 엔진 과 각종 작은 부품 등 이 있 습 니 다.부품 이 많 지만 이것 뿐만 이 아 닙 니 다.이런 부품 을 어떻게 자동차 로 조립 하 는 지 이 조립 과정 도 복잡 합 니 다.(좋 은 조립 기술 이 필요 합 니 다)Builder 모델 은 부품 과 조립 과정 을 분리 하기 위해 서 입 니 다.
어떻게 사용 합 니까?먼저 복잡 한 대상 이 여러 위 젯 으로 구성 되 어 있다 고 가정 합 니 다.Builder 모드 는 복잡 한 대상 의 생 성과 위 젯 의 생 성 을 각각 나 누 어 각각 Builder 류 와 Director 류 로 표시 합 니 다.
Builder 모드 의 응용 은 자바 의 실제 사용 에서 우 리 는'풀'(Pool)이라는 개념 을 자주 사용 합 니 다.자원 제공 자가 충분 한 자원 을 제공 하지 못 하고 이런 자원 이 많은 사용자 에 게 반복 적 으로 공유 되 어야 할 때 풀 을 사용 해 야 합 니 다.
'풀'은 실제 메모리 입 니 다.풀 에 복잡 한 자원 의'절단'(예 를 들 어 데이터 뱅 크 의 연결 풀,가끔 연결 이 끊 길 수도 있 습 니 다)이 있 습 니 다.만약 에 이런'절단'을 순환 적 으로 이용 하면 메모리 의 사용 효율 을 향상 시 키 고 풀 의 성능 을 향상 시 킬 것 입 니 다.Builder 모드 에서 Director 류 를 수정 하여'절단'이 어느 부품 에 부 러 졌 는 지 진단 하고 이 부품 을 복원 할 수 있 습 니 다.
다섯,   외관 모드(facade)---구조 모드
Facade 의 정의:서브 시스템 의 인터페이스 에 일치 하 는 인 터 페 이 스 를 제공 합 니 다.Facade 모델 은 고 층 인 터 페 이 스 를 정의 합 니 다.이 인 터 페 이 스 는 이 서브 시스템 을 더욱 쉽게 사용 할 수 있 습 니 다.
적용 성:
        1.                    。                   。                  。            ,            ,                           。
      Facade             ,                ,                   facade
    2.facade                   ,                。
    3.facade
      facade    ,              。

 
여섯,   장식 모드  (Decorator)---구조 모델
개술:대상 에 게 동적 으로 추가 적 인 직책 을 추가 합 니 다.기능 을 늘 리 는 데 있어 서 Decorator 모델 은 하위 클래스 를 만 드 는 것 보다 유연 하 다.
적용 성:
1.            ,   、              。
          2.
          3.

왜 Decorator 를 사용 합 니까?우 리 는 보통 계승 을 통 해 기능 의 확 대 를 실현 할 수 있다.만약 에 이런 확대 해 야 할 기능 의 종류 가 매우 많다 면 반드시 여러 가지 자 류 를 생 성하 고 시스템 의 복잡성 을 증가 하 는 동시에 계승 을 통 해 기능 의 확 대 를 실현 할 수 있다.우 리 는 이런 확장 기능 을 예견 할 수 있어 야 한다.이런 기능 은 컴 파일 할 때 확정 되 고 정태 적 인 것 이다.
Decorator 를 사용 하 는 이 유 는 이러한 기능 은 사용자 가 가입 하 는 방식 과 시 기 를 동태 적 으로 결정 해 야 하기 때 문 입 니 다.decorator 는'삽입 즉 사용'방법 을 제공 하여 운영 기간 에 언제 어떤 기능 을 추가 할 지 결정 합 니 다.
 
 
    ---    
  
   
1.RemoteProxy)                   。
    2.VirtualProxy)             。
    3.ProtectionProxy)          。
    4.SmartReference)        ,               。

프 록 시 를 왜 사용 합 니까?1.권한 수여 체제 의 서로 다른 등급 의 사용 자 는 같은 대상 에 대해 서로 다른 방문 권 리 를 가진다.예 를 들 어 Jive 포럼 시스템 에서 Proxy 를 사용 하여 권한 수여 체 제 를 제어 하고 포럼 을 방문 하 는 사람 은 두 가지 가 있다.등록 사용자 와 관광객(미등 록 사용자),Jive 에서 Forum Proxy 와 같은 대 리 를 통 해 이 두 가지 사용자 가 포럼 에 대한 방문 권한 을 제어 한다.
2.특정한 클 라 이언 트 가 특정한 대상 을 직접 조작 할 수 없 지만 그 대상 과 상호작용 을 해 야 한다.예 를 들 어 두 가지 구체 적 인 상황:(1)만약 에 그 대상 이 큰 그림 이 라면 오래 걸 려 야 표시 할 수 있 습 니 다.그러면 이 그림 이 문서 에 포함 되 어 있 을 때 편집기 나 브 라 우 저 로 이 문 서 를 열 면 문 서 를 빨리 열 어야 합 니 다.큰 그림 처리 가 끝 날 때 까지 기다 릴 수 없습니다.이 때 는 실제 그림 대신 그림 프 록 시 를 만들어 야 합 니 다.(2)그 대상 이 인터넷 의 원 격 서버 에 있다 면 이 대상 을 직접 조작 하 는 것 이 네트워크 속도 때문에 느 릴 수 있 습 니 다.그러면 우 리 는 먼저 프 록 시 로 그 대상 을 대체 할 수 있 습 니 다.
한 마디 로 하면 비용 이 많이 드 는 대상 에 대해 사용 할 때 만 만 만 드 는 것 이 원칙 이다.이 원칙 은 우리 에 게 귀중 한 자바 메모 리 를 많이 절약 할 수 있다.그래서 어떤 사람들 은 자바 가 자원 메모 리 를 소모 한다 고 생각한다.나 는 이것 이 프로그램 작성 사고 와 도 일정한 관계 가 있다 고 생각한다.
 
                    
 

일곱   어댑터 모드---구조 모드
Adapter
  : ,   Adaptee(    ) Adaptor(   )    .
     ,     。        ,      。
    ,        。
    1.            ,            。
    2.            ,                   (              )    。
    3.Adapter)             ,                       。               。

왜 사용 합 니까?우 리 는 항상 두 개의 관계 가 없 는 종 류 를 조합 하여 사용 해 야 한다.첫 번 째 해결 방안 은 각 유형의 인 터 페 이 스 를 수정 하 는 것 이다.그러나 우리 가 소스 코드 가 없 거나 하나의 응용 을 위해 각자 의 인 터 페 이 스 를 수정 하 는 것 을 원 하지 않 는 다.어 떡 하지?Adapter 를 사용 하여 이 두 인터페이스 사이 에 혼합 인터페이스(혼혈 아)를 만 듭 니 다.
 
여덟,   관찰자 모드
                ,             ,
1.            ,
      
   2.                   ,
   3.             ,             。
          ---    
              ,            。
TemplateMethod
1.               ,              。
   2.
                  ,              。
      ,                          。
3.
    ,        ,              ,          .
----    
            ,                   ;            ,          。

command 정의:많은 command 모드 의 코드 는 그래 픽 인터페이스 에 대한 것 입 니 다.이것 은 실제 적 으로 메뉴 명령 입 니 다.우 리 는 드 롭 다운 메뉴 에서 명령 을 선택 한 다음 에 동작 을 수행 합 니 다.
이 명령 들 을 한 클래스 에 패키지 한 다음 에 사용자(호출 자)가 이 클래스 를 조작 합 니 다.이것 이 바로 Command 모드 입 니 다.다시 말 하면 원래 사용자(호출 자)는 이 명령 들 을 직접 호출 합 니 다.예 를 들 어 메뉴 에서 문서(호출 자)를 열 면 문 서 를 여 는 코드 를 가리 키 고 Command 모드 를 사용 하 는 것 은 이 둘 사이 에 중간 자 를 추가 하여 이러한 직접적인 관 계 를 끊 는 것 입 니 다.동시에 둘 다 격 리 되 어 거의 관계 가 없다.
장점:패 키 징 의 특성 에 부합 되 고 결합 도 를 낮 춘 다.Command 는 행 위 를 패 키 징 하 는 전형 적 인 모델 이다.Factory 는 패 키 징 하 는 모델 을 만 들 것 이다.Command 모델 에서 나 도 디자인 모델 의'통폐'를 발견 했다.간단 한 문 제 를 복잡 하 게 만 드 는 것 을 좋아 하 는 것 같다.같은 종류 에서 제3 자 를 추가 하 는 것 을 좋아한다.물론 이렇게 하면 코드 의 건장 성 유지 가능성 과 재 활용 성에 유리 하 다.
 
 
 
12.책임 체인 모델---행위 모델
              ,                     。          ,           ,            。
        ,              ,           .
    1.              ,                 。
    2.               ,               。
    3.
                   

13.대리 모델 과 장식 모델 의 차이 점 은?
장식 모드:클 라 이언 트 에 대한 투명 한 방식 으로 대상 을 확장 하 는 기능 은 관 계 를 계승 하 는 대체 방안 입 니 다.프 록 시 모드:한 대상 에 게 프 록 시 대상 을 제공 하고 프 록 시 대상 이 기 존 대상 에 대한 인용 을 제어 합 니 다.장식 모델 은 장식 한 대상 에 게 기능 을 강화 해 야 한다.대리 모드 는 대리 의 대상 에 대해 통 제 를 가 하고 대상 자체 의 증강 기능 을 제공 하지 않 습 니 다.
두 사람의 실현 체 제 는 확실히 같 아서 그들의 인 스 턴 스 코드 가 중복 되 는 것 을 볼 수 있다.그러나 의미 적 으로 볼 때 이 두 가지 기능 은 반대 이다.모델 의 중요 한 역할 은 다른 프로그래머 들 이 당신 의 프로그램 에 대한 이 해 를 간소화 하 는 것 이다.당신 이 한 곳 에 장식 을 쓰 면 사람들 은 이것 이 기능 을 증가 하고 있다 는 것 을 알 게 될 것 이다.당신 이 대 리 를 쓰 면 모두 가 제한 하고 있다 는 것 을 알 게 될 것 이다.비록 코드 가 같 을 수 있 지만 그들 에 게 장식 이 라 고 부 르 면 다른 사람들 은 매우 현혹 될 것 이다.
 
14.추상 적 인 공장 과 템 플 릿 방법의 차이?
템 플 릿 방법 은 생 성과 사용 에서 제품 을 얻 지 못 했 습 니 다.가장 큰 차이 점 은 계승 관계 에서 제품 이 없다 는 것 입 니 다.
구축 과정.추상 적 인 공장 은 제품 을 만 들 려 고 하 는데 공장 은 제품 에 따라 결정 한다.

좋은 웹페이지 즐겨찾기