首页 > 编程语言 > 详细

java设计模式之组合模式

时间:2017-02-16 23:52:00      阅读:275      评论:0      收藏:0      [点我收藏+]

组合模式用于文件夹的添加 病毒的查杀,文件夹的删除,等等 遍历容器下的节点。

数据结构中的二叉树的遍历就是设计模式中的组合模式。

实现的代码类如下:

package composite;

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

public interface AbstractFile {
void killVirus();
}
class ImageFile implements AbstractFile{
private String name;
public ImageFile(String name) {
super();
this.name = name;
}
@Override
public void killVirus() {
// TODO Auto-generated method stub
System.out.println("---图像处理"+name+"进行查杀!");
}


}
class TextFile implements AbstractFile{
private String name;
public TextFile(String name) {
super();
this.name = name;
}
@Override
public void killVirus() {
// TODO Auto-generated method stub
System.out.println("--文本处理"+name+"进行查杀!");
}
}
class VideoFile implements AbstractFile{
private String name;
public VideoFile(String name) {
super();
this.name = name;
}
@Override
public void killVirus() {
// TODO Auto-generated method stub
System.out.println("--视频处理"+name+"进行查杀!");
}
}
class Folder implements AbstractFile{
private String name;
//定义容器,用来存放容器构建下的子节点
private List<AbstractFile> list=new ArrayList<AbstractFile>();
public Folder(String name) {
super();
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);
}

@Override
public void killVirus() {
// TODO Auto-generated method stub
System.out.println("--文件夹"+name+"进行查杀!");
for (AbstractFile file : list) {
file.killVirus();
}
}
}

 

测试客户端为:

package composite;

public class Client {
public static void main (String [] args){
AbstractFile f2,f3;
Folder f1=new Folder("我的收藏");
f2=new ImageFile("老蔡的大头像");
f3=new TextFile("hello.jsp");
f1.add(f2);
f1.add(f3);
f1.killVirus();
}
}

java设计模式之组合模式

原文:http://www.cnblogs.com/cyz110/p/6407464.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!