複合モードのコンポジット
シーン組み合わせモード:クライアントが統一され、積分処理対象のオブジェクトを使用することができるように部品と全体との関係は、ツリー構造で表現される(ファイルとフォルダ)
コア複合モード:
- 抽象コンポーネント(部品)の役割は:共通接地葉とコンテナを定義します
- 葉(リーフ)コンポーネントの役割:なし子ノード
- 容器(コンポジット)成分の役割:前記コンテナ:子ノードを含んでもよく、又は他の容器を
このようなアンチウイルスソフトウェアとして:
パブリック抽象クラスファイル{
保護された文字列の名前。
抽象無効killVirus(); //杀毒
公開ファイル(文字列名){
this.name =名;
}
}
クラスの画像ファイルは、ファイル{延び
公衆画像ファイル(文字列名){
スーパー(名);
}
公共ボイドkillVirus(){
System.out.printlnは( "对图片" + this.name + "JPG进行杀毒。");
}
}
クラスTextFileのは、ファイル{延び
公共TextFileの(文字列名){
スーパー(名);
}
公共ボイドkillVirus(){
System.out.printlnは( "对文本" + this.name + "TXT进行杀毒。");
}
}
クラスフォルダは、ファイル{拡張
一覧<ファイル>ファイルを。
パブリックフォルダ(文字列名){
スーパー(名);
ファイル=新しいのArrayList <ファイル>();
}
公共ボイド追加(ファイルf){
files.add(F)。
}
公共ボイド削除(INTインデックス){
files.remove(インデックス)
}
公開ファイルでGetChild(INTインデックス){
戻りfiles.get(インデックス)
}
ボイドkillVirus(){
System.out.printlnは( "对" + this.name + "进行查杀")。
(ファイルf:ファイル)の{ //天然的递归
f.killVirus();
}
}
}
パブリッククラスクライアント{
公共の静的な無効メイン(文字列[] args){
ファイルF2、F3、F4、
フォルダF1 =新しい新しいフォルダ( "お気に入り");
フォルダF5 =新しい新しいフォルダ( "私の小説");
F2 =新しい画像ファイル( "張");
F3はTextFileの新しい新=( "武林は");
; F4はTextFileの新しい( "子供連れの家族")新しい=
f5.add(F3);
f5.add(F4);
f1.addを( F2);
f1.add(F5);
f1.killVirus();
}
}