ツリー構造
ツリー:ルート - >ブランチ - >葉
株式会社 - >ブランチ - >ブランチ部門
ルート:会社 - >会社の部署
パッケージ構造、 インポート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()。 } } }