您的位置:首页 > 编程语言 > Java开发

Java设计模式(九):组合模式composite

2016-05-29 13:32 411 查看




package com.iter.devbox.composite;

import java.util.ArrayList;
import java.util.List;

/**
* 抽象构件
* @author Shearer
*
*/
public interface AbstractFile {
void killVirus();  //杀毒
}
class ImageFile implements AbstractFile {
private String name;
public ImageFile(String name) {
this.name = name;
}
@Override
public void killVirus() {
System.out.println("---图像文件:" + name + "进行查杀!");
}
}
class TextFile implements AbstractFile {
private String name;
public TextFile(String name) {
this.name = name;
}
@Override
public void killVirus() {
System.out.println("---文本文件:" + name + "进行查杀!");
}
}
class VideoFile implements AbstractFile {
private String name;
public VideoFile(String name) {
this.name = name;
}
@Override
public void killVirus() {
System.out.println("---视频文件:" + name + "进行查杀!");
}
}
//文件夹(接口)
interface IFolder extends AbstractFile {
void add(AbstractFile f);
void remove(AbstractFile f);
AbstractFile getChild(int index);
}
//文件夹(实现类)
class Folder implements IFolder {
private String name;
private List<AbstractFile> list = new ArrayList<AbstractFile>();
public Folder(String name) {
this.name = name;
}
public void add(AbstractFile f) {
list.add(f);
}
public void remove(AbstractFile f) {
list.remove(f);
}
public AbstractFile getChild(int index) {
return list.get(index);
}
@Override
public void killVirus() {
System.out.println("---文件夹:" + name + "进行查杀!");
for (AbstractFile file : list) {
file.killVirus();
}
}
}

package com.iter.devbox.composite;

public class Client {
public static void main(String[] args) {
AbstractFile file1 = new ImageFile("cat.jpg");
AbstractFile file2 = new TextFile("readme.txt");
AbstractFile file3 = new VideoFile("海贼王01.mp4");
IFolder folder = new Folder("文件夹01");
IFolder subFolder = new Folder("文件夹02");
folder.add(file1);
folder.add(subFolder);
subFolder.add(file2);
subFolder.add(file3);
folder.killVirus();
}
}


运行结果:

---文件夹:文件夹01进行查杀!

---图像文件:cat.jpg进行查杀!

---文件夹:文件夹02进行查杀!

---文本文件:readme.txt进行查杀!

---视频文件:海贼王01.mp4进行查杀!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: