一、题目

设计一款杀毒软件,客户可以直接对文件(ImageFile和TextFile)进行杀毒
也可以对某个指定文件夹(ImageFolder和TextFolder)下的文件进行杀毒。

java实现

Interface接口:

public interface Interface {
void setName(String name);

//添加子目录的方法
void add(Interface face);

//添加子目录的方法
    void remove(Interface face);
  
  //杀毒方法
void kissVirus();

}

ImageFile类

public class ImageFile implements Interface{
String name;

public void setName(String name) {
this.name=name;
}

public void add(Interface face) {
System.out.print("不支持该方法");
}

public void kissVirus() {

System.out.println("对图像文件"+name+"进行杀毒");
}

public void remove(Interface face) {
// TODO Auto-generated method stub
System.out.print("不支持该方法");
}

}

TextFile类

public class TextFile implements Interface{
String name;

public void setName(String name) {
this.name=name;

}

public void add(Interface face) {
System.out.print("不支持该方法");
}

public void kissVirus() {
System.out.println("对文本文件"+name+"进行杀毒");
}

public void remove(Interface face) {
// TODO Auto-generated method stub
System.out.print("不支持该方法");

}

}

ImageFolder

import java.util.ArrayList;
import java.util.List;
public class ImageFolder implements Interface {

String name;
public ArrayList<Interface> list=new ArrayList<Interface>();
//这个集合用来存放文件夹或者文件
public void setName(String name) {
this.name=name;
}

  //往目录添加文件或者文件夹的方法
public void add(Interface face) {
list.add(face);
}

public void remove(Interface face) {
// TODO Auto-generated method stub
list.remove(face);
}

public void kissVirus() {

System.out.print("对"+name+"进行杀毒>");
//对子目录进行历遍
for(Interface image: list)
{
image.kissVirus();
}
}
}

TextFolder

import java.util.ArrayList;
public class TextFolder implements Interface{
 String name;
 public ArrayList<Interface> list=new ArrayList<Interface>();
   //这个集合用来存放文件夹或者文件
public void setName(String name) {
// TODO Auto-generated method stub
this.name=name;
}
//往目录添加文件或者文件夹的方法
public void add(Interface face) {
// TODO Auto-generated method stub
list.add(face);
}

public void remove(Interface face) {
// TODO Auto-generated method stub
list.remove(face);
}

public void kissVirus() {
// TODO Auto-generated method stub
System.out.print("对"+name+"进行杀毒>");

//对集合进行历遍
for(Interface face:list)
{
face.kissVirus();
}
}
}

客户类:



public class Action {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TextFile text=new TextFile();
text.setName("李四.txt");
//创建名为“李四.txt”的文本文件

ImageFile image=new ImageFile();
image.setName("001.jpg");
//创建名为“001.jpg”的图像文件

ImageFile image1=new ImageFile();
image1.setName("002.jpg");
ImageFolder iFolder1=new ImageFolder();
iFolder1.setName("图像文件1.0");
iFolder1.add(image1);
ImageFolder iFolder2=new ImageFolder();
iFolder2.setName("图像文件2.0");
iFolder2.add(iFolder1);
//创建图像文件2.0>图像文件1.0>002.jpg。

TextFile text1=new TextFile();
text1.setName("张三.txt");
TextFolder tFolder1=new TextFolder();
tFolder1.setName("文本文件1.0");
tFolder1.add(text1);
TextFolder tFolder2=new TextFolder();
tFolder2.setName("文本文件2.0");
tFolder2.add(tFolder1);
//创建文本文件2.0>文本文件1.0>张三.txt。

Action action=new Action();
action.kissVirus(text);//直接对文本文件杀毒
action.kissVirus(image);//直接对图像文件杀毒
action.kissVirus(iFolder2);//对文件夹下的文本文件杀毒

action.kissVirus(tFolder2);/对图像文件下的图像文件杀毒

}

//客户进行杀毒的方法
public void kissVirus(Interface face)
{
face.kissVirus();

}

}

运行结果:

结构型模式之组合模式:杀毒系统

相关文章:

  • 2021-05-27
  • 2021-12-20
  • 2022-02-10
  • 2021-05-13
  • 2021-07-17
  • 2022-12-23
  • 2021-11-19
猜你喜欢
  • 2021-11-17
  • 2021-08-22
  • 2023-04-08
  • 2021-05-19
  • 2021-06-15
相关资源
相似解决方案