zoukankan      html  css  js  c++  java
  • java设计模式之组合模式

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

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

    实现的代码类如下:

    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();
    }
    }

  • 相关阅读:
    git--简单操作
    flask--简记
    Python--进阶处理9
    Python--比较两个字典部分value是否相等
    Python--进阶处理8
    Python--进阶处理7
    Python--进阶处理6
    Python--进阶处理5
    java7连接数据库 网页 添加学生信息测试
    使用类的静态字段和构造函数,可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”
  • 原文地址:https://www.cnblogs.com/cyz110/p/6407464.html
Copyright © 2011-2022 走看看