상용 디자인 모드 정리

2443 단어
단순 공장 모드:
  • 하나의 단독 클래스 로 인 스 턴 스 를 만 드 는 과정
  • // Example
    //     
    public class Father{...}
    //            ,        
    public class Son1 : Father {...}
    public class Son2 : Father {...}
    //      ,              
    public class Factroy
    {
      Father father = null;
      swith(operate)
      {
        case "Son1":
          father = new Son1();
        case "...":
          father = ...
      }
      //     
    }
    

    정책 모드:
  • 각각 정의 와 패 키 징 알고리즘 가족, 이런 알고리즘 들 은 똑 같은 작업 을 완 성 했 고 서로 다른 것 만 실현 했다
  • 한 Context 류 가 사용 해 야 할 알고리즘 류 를 유지 하고 클 라 이언 트 의 영향 을 줄 이 며 유닛 테스트
  • 를 간소화 했다.
    // Example
    //      
    pulic abstract class Father
    {
      //         
    }
    //              ,       
    public class Son1 : Father{...}
    public class Son2 : Father{...}
    //      ,             ,           
    public class Context
    {
      //         
      Father father;
      //             
      public Context(Father father)
      {
        this.father = father;
      }
    } 
    

    장식 모드:
  • 동태 적 으로 특정한 대상 에 게 추가 적 인 직책 을 추가 하 는 모델
  • 클래스 의 장식 기능 을 분리 하여 핵심 기능 을 남긴다
  • 필요 한 동적 변화 류 에 필요 한 장식 기능 에 따라 중복 되 는 논리 제거
  • 주 체 는 하나의 장식 (또는 비어 있 음) 을 유지 하고 장식 은 하나의 장식 (또는 비어 있 음)
  • 을 유지한다.
    // Example
    //          
    abstract class Component
    {
      public abstract void Operation();
    }
    
    // MainObject             
    class MainObject : Component 
    {
      public overrive void Operation()
      {
        ......
      }
    }
    // Decorator        ,  Component
    abstract class Decorator : Component
    {
      protected Component component;
      
      public void SetComponent(Component component)
      {
        this.component = component;
      }
      
      public override void Operation()
      {
        if(component != null)
        {
          component.Operation();
        }
      }
    }
    
    

    프 록 시 모드:
  • 이 대상 에 대한 접근 을 제어 하기 위해 다른 대상 에 게 에이 전 트 를 제공 합 니 다
  • 한 대상 에 게 서로 다른 주소 공간 에서 국부 대 표를 제공한다
  • 한 대상 이 서로 다른 주소 공간 에 존재 한 다 는 사실 을 숨 길 수 있다
  • 실제 대상 이 방문 할 때의 권한 을 제어 하 는 데 사용
  • 실제 대상 을 호출 할 때 대리 가 다른 I 의 일 을 처리 할 수 있다
  • // Example
    //               
    abstact class Subject
    {
      public abstract void Request();
    }
    //       
    class RealSubject : Subject
    {
      public override void Request()
      {
        ...
      }
    }
    //    
    class Proxy : Subject
    {
      RealSubject realSubject;
      public override void Request()
      {
        if(realSubject == null)
        {
          realSubject = new RealSubject();
          ...
        }
        realSubject.Request();
      }
    }
    

    공장 방법 모델
  • 좋은 웹페이지 즐겨찾기