중간 트랜잭션 http://www.aliyun.com/zixun/aggregation/6858.html "> seo 진단 Taobao 게스트 클라우드 호스트 기술 홀
합성 (합성) 모드는 나무의 관계를 설명 하기 위해 나무에 개체를 구성 하는 매우 중요 한 디자인 패턴을 합니다. 첫째, 도식 다이어그램 도식 다이어그램 파일에서에서 볼 수, 모든 폴더는 리드를 치료할 수 ifile 동등 하 게, 개체 관리에 대 한 큰 편의 제공 합니다. 물론,이 매우 이미지 때문에 나무의 개념은 하지 않습니다 그냥 파일 폴더의 계층 구조, 실제 개념에 있는 많은 나무, 같은 조직 구조, 분류 수준, 및에 논리적 개념으로, 물리적 또는 논리적으로, Java에는 동일한 처리. 둘째, 논리적 트리 아래의 예제 구현 하는 방법과 나무를 사용 하 여 볼 수 위의 회로도 바탕으로,이 구조는 매우 간단 합니다, 하지만 내 사용에 대 한 트리를 탐색 트리를 사용 하거나 어느 정도의 난이도가지고 하는 방법. 그것은 나무의 재귀 순회 사용 하기 꽤 어려운 재귀적으로 탐색 수준 제어 하는 방법, (비슷한) 실제 관계를 논리적 관계를 변환 하는 방법 하는 방법. 알고 보면 말도 얘기 하지 마십시오. /**
* IntelliJ 아이디어에 의해 만들어진.
* 사용자: leizhimin
* 날짜: 2008-8-2 16시 13분: 59
* 파일 역할
를 추상화
*/
공용 인터페이스 IFile {
//Return 자신의 인스턴스
ifile getcomposite ();
//A 비즈니스 메서드
void Sampleoperation ();
//Get 깊이
int getdeep ();
//Set 깊이
Setdeep 무효 (int x);
}import Java.util.Vector;
/**
* IntelliJ 아이디어에 의해 만들어진.
* 사용자: leizhimin
* 날짜: 2008-8-2 16시 15분: 03
* 폴더 역할
*/
공용 클래스 폴더 구현 IFile {
개인 문자열 이름; 파일 이름
개인 int 깊은; 수준의 깊이, 뿌리 깊이 0
개인 벡터 < ifile > componentvector = 새로운 벡터 < ifile > ();
공용 폴더 (문자열 이름) {
this.name = 이름;
}
//Return 자신의 인스턴스
공공 ifile Getcomposite () {
반환이;
}
//A 비즈니스 메서드
공용 void Sampleoperation () {
System.out.println ("비즈니스 메서드 실행!") ");
}
//Add는 파일 또는 폴더
공공 무효 추가 (IFile ifile) {
componentvector.addelement (ifile);
Ifile.setdeep (this.deep 1);
}
//Delete는 파일 또는 폴더
공공 무효 제거 (IFile ifile) {
componentvector.removeelement (ifile);
}
//Return 직접 하위 파일 (폴더) 컬렉션
공공 벡터 getallcomponent () {
반환 componentvector;
}
공용 문자열 GetName () {
반환 이름;
}
공공 무효 SetName (문자열 이름) {
this.name = 이름;
}
공공 int Getdeep () {
반환 깊은;
}
공공 무효 Setdeep (int 깊은) {
this.deep = 깊은;
}
}/**
* IntelliJ 아이디어에 의해 만들어진.
* 사용자: leizhimin
* 날짜: 2008-8-2 16시 27분: 15
*
파일
*/
IFile {
를 구현 하는
공용 클래스 파일
개인 문자열 이름; 파일 이름
개인 int 깊은; 레벨 깊이
공공 파일 (문자열 이름) {
this.name = 이름;
}
//Return 자신의 인스턴스
공공 ifile Getcomposite () {
반환이;
}
//A 비즈니스 메서드
공용 void Sampleoperation () {
System.out.println ("비즈니스 메서드 실행!") ");
}
공용 문자열 GetName () {
반환 이름;
}
공공 무효 SetName (문자열 이름) {
this.name = 이름;
}
공공 int Getdeep () {
반환 깊은;
}
공공 무효 Setdeep (int 깊은) {
this.deep = 깊은;
}
}import Java.util.Iterator;
가져오기 Java.util.Vector;
/**
* IntelliJ 아이디어에 의해 만들어졌습니다.
* 사용자: leizhimin
* 날짜: 2008-8-2 16시 35분: 25
* 트리
이동 테스트
*/
공용 클래스 클라이언트 {
공공 정적 문자열 IndentChar = "\ t"; 파일 수준 들여쓰기 문자
공공 정적 무효 메인 (문자열 args[]) {
새로운 클라이언트 (). 테스트 ();
}
/**
* 클라이언트 테스트 메서드
*/
공공 무효 테스트 () {
//root 파일 및 폴더
폴더 루트 = 새로운 폴더 ("루트");
폴더 B1_1 = 새 폴더 ("1_ 분기 1");
폴더 B1_2 = 새 폴더 ("1_ 분기 2");
폴더 B1_3 = 새 폴더 ("1_ 지점 3");
파일 L1_1 = 새로운 파일 ("1_ 잎 1");
파일 L1_2 = 새로운 파일 ("1_ 잎 2");
파일 L1_3 = 새로운 파일 ("1_ 잎 3");
//b1_2 파일 및 폴더
폴더 B2_1 = 새 폴더 ("2_ 분기 1");
폴더 B2_2 = 새 폴더 ("2_ 2");
파일 L2_1 = 새로운 파일 ("2_ 잎 1");
//Tree-building 계층 구조 (간단한 테스트, 아니 반복 컨트롤)
Root.add (b1_1);
Root.add (b1_2);
Root.add (l1_1);
Root.add (l1_2);
B1_2.add (b2_1);
B1_2.add (b2_2);
B1_2.add (l2_1);
Root.add (l1_3);
Root.add (b1_3);
//console 인쇄 트리 계층 구조
Outtree (루트);
}
공공 무효 Outtree (폴더) {
System.out.println (Folder.getname ());
Iteratetree (폴더);
}
/**
* 트래버스 폴더 입력 파일 트리
*
* @param 폴더
*/
공공 무효 Iteratetree (폴더) {
벡터 < ifile > clist = Folder.getallcomponent ();
//todo: CList 정렬할 수 있습니다 통과, 전에 우선 순위
대 한 (반복기 < ifile > 그것 = Clist.iterator (); It.hasnext ();) {
ifile 그들을
= It.next ();
경우 (em instanceof 폴더) {
폴더 cm = (폴더) 안에;
System.out.println (Getindents (Em.getdeep ()) cm.getname ());
iteratetree (cm);
} else {
System.out.println (Getindents (Em.getdeep ()) ((파일) EM). GetName ());
}
}
}
/**
* 파일 수준 들여쓰기 문자열
*
* 들여쓰기 수 문자
x @param
* @return 들여쓰기 문자열
*/
공공 정적 문자열 getindents (int x) {
StringBuilder sb = 새로운 StringBuilder ();
에 대 한 (int i = 0; 난 < x;) {
sb.append (IndentChar);
}
반환 sb.tostring ();
}
} 3, 실행 테스트 콘솔 출력 다음과 같습니다:
그것은 분명 트리 논리적 관계 성공적으로 입증 되었습니다. Iv. 요약 1, 위에 사용 되는 복합 모델은 안전 종합 모델, 그리고 소위 보안 파일 및 폴더는 다른 방법. 폴더 개체, 없는 파일은 클러스터의 관리를 했다. 2, 프로그램 디자인에 합성 패턴은 광범위 한 응용 프로그램, 예를 들어 dom4j, 리소스 관리자, 자바 GUI 컨테이너 계층 구조 다이어그램 및에 합성 패턴 응용 프로그램 모델. 3, 합성 모드를 많이 하는 데 필요한 분석 하 고 식별 생각, 같은 할 복잡 한 수학식 계산기로는 4 종류의 운영 기호. 수와 식 피연산자도 추상화 될 수 있도록 분석은 계산의 두 가지, 하나입니다, 다른 다양 한 식 이지만 식 숫자의 구성도 발견. 식은 계산 하려면 다음 표시 됩니다. 문제가 해결 되었습니다.