把部分和總體的關係用樹形結構來表示,從而使客戶端能夠使用統一的方式對部分對象和總體對象進行管理。
ui
1.抽象構件
this
public interface AbstractFile {
void killVirus();//殺毒
}複製代碼
2. 葉子構件
阿里雲
class ImageFile implements AbstractFile{
private String name;
public ImageFile(String name){
this.name=name;
}
public void killVirus() {
System.out.println("---對圖像文件"+name+"殺毒");
}
}
class TextFile implements AbstractFile{
private String name;
public TextFile(String name){
this.name=name;
}
public void killVirus() {
System.out.println("---對文本文件"+name+"殺毒");
}
}複製代碼
3. 容器構件
spa
class Folder implements AbstractFile{
private String name;
private ArrayList<AbstractFile> list=new ArrayList<AbstractFile>();
public Folder(String name){
this.name=name;
}
public void add(AbstractFile file){
list.add(file);
}
public void remove(AbstractFile file){
list.remove(file);
}
public AbstractFile getChild(int index){
return list.get(index);
}
public void killVirus() {
System.out.println("---對文件夾"+name+"殺毒");
for(AbstractFile file:list){
file.killVirus();
}
}
}
複製代碼
4.客戶端
3d
public class Client {
public static void main(String[] args) {
Folder f1;
AbstractFile f2,f3;
f1=new Folder("個人收藏");
f2=new ImageFile("my.jpg");
f3=new TextFile("my.txt");
f1.add(f2);
f1.add(f3);
f1.killVirus();
}
}
//輸出結果:
---對文件夾個人收藏殺毒
---對圖像文件my.jpg殺毒
---對文本文件my.txt殺毒
複製代碼