조합 모드가 소스 코드에서의 응용
사례 1
JDK의 AWT(Abstract Window Toolkit)는 조합 모드를 사용합니다.AWT에는 컨테이너 어셈블리와 기본 어셈블리 두 가지 어셈블리가 있습니다.
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 처리에서 조합 모드를 사용합니다.
public interface SqlNode {
boolean apply(DynamicContext context);
}
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;
}
}
SqlNode의 실현 클래스는 용기 클래스와 잎 노드를 통해 트리 구조로 구성되고 apply를 사용하여 완전한 SQL을 동적으로 해석한다.
[Java 학습자원] 정리 추천
[Java 면접문제와 답안] 정리 추천.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.