조합 모드가 소스 코드에서의 응용

3056 단어
조합 모드의 역할: 대상을 트리 차원 구조로 조합하여 사용자가 단일 대상과 조합 대상에 대해 일치된 접근성을 가지도록 한다.
 

사례 1


JDK의 AWT(Abstract Window Toolkit)는 조합 모드를 사용합니다.AWT에는 컨테이너 어셈블리와 기본 어셈블리 두 가지 어셈블리가 있습니다.
  • 용기 구성 요소는java입니다.awt.Container의 자손류
  • 기본 구성 요소는java입니다.awt.Component의 자손 클래스
  • 용기 구성 요소와 기본 구성 요소는 모두java입니다.awt.Component의 자손 클래스
  • Container 클래스에는 ArrayList에 배치된 다양한 기본 구성 요소 또는 컨테이너가 포함됩니다.
    public class Container extends Component {
        private java.util.List component = new ArrayList<>();
        
        // 
        public Component add(Component comp) {
            addImpl(comp, null, -1);
            return comp;
        }
    }

    기본 구성 요소와 용기 구성 요소는 트리 구조를 구성한다.Component의 자손이기 때문에 Component를 정의하는 방법과 방문에 일치성을 가진다
     

    사례 2


    Mybatis는 xml 동적 ql 처리에서 조합 모드를 사용합니다.
  • 추상적인 구축 인터페이스 SqlNode, apply 방법을 정의하고 전송 매개 변수에 따라 sql
  • public interface SqlNode {
      boolean apply(DynamicContext context);
    }
  • 용기류 MixedSqlNode, ChooseSqlNode SqlNode 인터페이스 구현, List 저장소 SqlNode
  • public class MixedSqlNode implements SqlNode {
      private List contents;
    
      public MixedSqlNode(List contents) {
        this.contents = contents;
      }
    
      @Override
      public boolean apply(DynamicContext context) {
        for (SqlNode sqlNode : contents) {
          sqlNode.apply(context);
        }
        return true;
      }
    }
    public class ChooseSqlNode implements SqlNode {
      private SqlNode defaultSqlNode;
      private List ifSqlNodes;
    
      public ChooseSqlNode(List ifSqlNodes, SqlNode defaultSqlNode) {
        this.ifSqlNodes = ifSqlNodes;
        this.defaultSqlNode = defaultSqlNode;
      }
    
      @Override
      public boolean apply(DynamicContext context) {
        for (SqlNode sqlNode : ifSqlNodes) {
          if (sqlNode.apply(context)) {
            return true;
          }
        }
        if (defaultSqlNode != null) {
          defaultSqlNode.apply(context);
          return true;
        }
        return false;
      }
    }
  • 기타 잎 노드: TextSqlNode,StaticTextSqlNode,TrimsqlNode,SetSqlNode,WhereSqlNode...모두 apply 방법으로 SQL
  • 구축
     
    SqlNode의 실현 클래스는 용기 클래스와 잎 노드를 통해 트리 구조로 구성되고 apply를 사용하여 완전한 SQL을 동적으로 해석한다.
     
     
     

    [Java 학습자원] 정리 추천

  • 조합 모드가 소스 코드에서의 응용
  • 향원 모드가 소스 코드에서의 응용
  • 외관 모드가 소스 코드에서의 응용
  • 장식기 모드가 소스 코드에서의 응용
  • 브리지 모드가 소스 코드에서의 응용
  • 어댑터 모드가 소스 코드에서의 응용
  • 프록시 모드가 소스 코드에서의 응용
  • 원형 모델이 소스 코드에서의 응용
  • 건설자 모드가 소스 코드에서의 응용
  • 공장 모델이 소스 코드에서의 응용
  • 단일 모드가 소스 코드에서의 응용
  • 인코딩 규범
  • 디자인 모델
  • 재구성
  • 설계 원칙
  • 대상이 도대체 무엇인지
  • 코드의 품질은 어떤 평가 기준이 있습니까?

  •  
     

    [Java 면접문제와 답안] 정리 추천.

  • 기초와 문법
  • 컬렉션
  • 네트워크 프로그래밍
  • 동시 프로그래밍
  • Web
  • 안전
  • 디자인 모델
  • 프레임
  • 알고리즘과 데이터 구조
  • 이상
  • 파일 분석 및 생성
  • Linux
  • MySQL
  • Oracle
  • Redis
  • Dubbo

  • 좋은 웹페이지 즐겨찾기