12複合モード(15)

ツリー構造

ツリー:ルート - >ブランチ - >葉

株式会社 - >ブランチ - >ブランチ部門

ルート:会社 - >会社の部署

 

パッケージ構造、

インポートjava.util.ArrayListのの、
 インポートjava.util.Listに、

パブリック クラスCompositeMain { 

    公共 静的 ボイドメイン(文字列[]引数){ 
        
        // ルート、ルートコンテンツ
         // 株式会社、及び株式会社どこの部署 
        HCompanyルート= 新新 HCompany( "米タイム社" ); 
        root.add(新新 LearnDepartment( "会社のR&D" )); 
        root.add(新新 DisciplineDepartment( "セクター評価・コーポレーション" )); 
        
        // 支店ノード 
        HCompany branchC1 = 新新 HCompany( "衡水ブランチ");
        branchC1.add(新新 LearnDepartment( "衡水開発部" )); 
        branchC1.add(新新 DisciplineDepartment( "衡水包括的な金融セクター" )); 
        root.add(branchC1); // 会社が支店を持つ
        
        // ブランチノード 
        branchC2 = HCompany 新しい新 HCompany( "天水支店" ); 
        branchC2.add(新新 LearnDepartment( "天水トレーニング" )); 
        branchC2.add(新新 DisciplineDepartment( "管理統合部門" )); 
        root.add(branchC2) ; // 当社は、支店がある
        
        のSystem.out.println( "組織図===== =====" ;)
        ルートを。表示(1);
        System.out.println( "==== ====企业文化" ); 
        root.learn(); 
    } 
} 

// 抽象构件
抽象 クラスZCompany { 
    
    保護された文字列名。
    
    公共ZCompany(文字列名){
         この .nameの= 名前。
    } 
    
    パブリック 抽象 ボイド追加(ZCompany c)は、
    パブリック 抽象 ボイド削除(ZCompany c)は、
    パブリック 抽象 ボイドディスプレイ(int型のDEPTNO)。
    パブリック 抽象 ボイド学びます(); 
} 

//树叶构件
クラス LearnDepartmentは延びZCompany { 

    公共LearnDepartment(文字列名){
         スーパー(名); 
    } 

    @Override 
    公共 ボイド追加(ZCompany c)は{} 

    @Override 
    公共 ボイド削除(ZCompany c)は{} 

    @Override 
    公共 ボイドディスプレイ(INT DEPTNO){ 
        するSystem.out.println( "学术部门:" +名+ " - >" + DEPTNO)。
    } 

    @Override 
    公共 ボイドは(){学習
        するSystem.out.println( "学习知识:" + 名)。
    } 
} 

// 树叶构件
クラス DisciplineDepartmentが延びZCompany { 

    公共DisciplineDepartment(文字列名){
         スーパー(名); 
    } 

    @Override 
    公共 ボイド追加(ZCompany c)は{} 

    @Override 
    公共 ボイド削除(ZCompany c)は{} 

    @Override 
    公共 ボイドディスプレイ(INT DEPTNO){ 
        するSystem.out.println( "纪律部门:" +名+ " - >" + DEPTNO)。
    } 

    @Override 
    公共 ボイドは(学習){ 
        System.out.printlnは( "学习纪律:" + 名)。
    } 
} 
// 葉の構造なし容量(ブランキングメソッドを追加および削除)
 // 分岐構造の
クラス HCompany 拡張ZCompany { 

    プライベートリスト<ZCompany>一覧= 新しい新しいのArrayListを<ZCompany> ();
     公共HCompany(文字列名){
         スーパー(名前); 
    } 
    @Override 
    公共 ボイド追加(ZCompany C){ 
        List.add(C); 
    } 

    @Override 
    公共 ボイド削除(ZCompany C){ 
        list.remove(C); 
    } 

    @Override 
    公共 ボイドディスプレイ(INTDEPTNO){
         ため(ZCompany zCompany:リスト){ 
            zCompany.display(DEPTNO)。
        } 
    } 

    @Override 
    公共 ボイドは(){学習
         (ZCompany zCompany:リスト){ 
            zCompany.learn()。
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/zzlcome/p/11423353.html