디자인 모드 09 - 조합 모드

6427 단어 디자인 모드
1. 개념
         파 트 라 고도 하 죠. - 전체 모드.   전체 와 부분 이 존재 할 때 클 라 이언 트 가 전체 와 부분의 차 이 를 무시 하 기 를 바 랍 니 다. 
 
 
2. 사례 
/**********************************************************************

 * <pre>

 * FILE : Demo01.java

 * CLASS : Demo01

 *

 * AUTHOR : Liaokailin

 *

 * FUNCTION : TODO

 *

 *

 *======================================================================

 * CHANGE HISTORY LOG

 *----------------------------------------------------------------------

 * MOD. NO.|   DATE   |   NAME  | REASON  | CHANGE REQ.

 *----------------------------------------------------------------------

 *             |2014-3-5|Liaokailin| Created |

 * DESCRIPTION:

 * </pre>

 ***********************************************************************/

package org.demo.composite;



import java.util.ArrayList;

import java.util.Iterator;



/**

 *                            

 * Function : 

 * @author : Liaokailin

 * CreateDate : 2014-3-5

 * version : 1.0

 */

public class Demo01 {

    @SuppressWarnings("unchecked")

    public static void main(String args[]){

        Node root = new Node("root") ;

        root.add(new Leaf("-leaf1")) ;

        Node c2 = new Node("-Node1") ;

        c2.add(new Leaf("--leaf2")) ;

        c2.add(new Leaf("--leaf3")) ;

        root.add(c2) ;

        c2 = new Node("-Node2");

        c2.add(new Leaf("--Leaf4"));

        c2.add(new Leaf("--Leaf5"));

        root.add(c2);

        root.operation() ;

    }

}





interface Component{

    void operation() ;

}





class Leaf implements Component{

    private String name  ;

    public Leaf(String name ){this.name = name ;}

    public String toString(){ return this.name ;}

    @Override

    public void operation() {

        System.out.println(this) ;

    }

}



class Node extends ArrayList implements Component{

    private String name ;

    public Node(String name){this.name = name ;}

    public String toString(){return this.name ;}

    @Override

    public void operation() {

        System.out.println(this) ;

        for(Iterator it = iterator() ;it.hasNext();){  // iterator() :        

            ((Component)(it.next())).operation() ;

        }

    }

    

}

 
허 용 된 결과: 
   
root

-leaf1

-Node1

--leaf2

--leaf3

-Node2

--Leaf4

--Leaf5

 
 

좋은 웹페이지 즐겨찾기