一、题目
设计一款杀毒软件,客户可以直接对文件(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();
}
}
运行结果: