zoukankan      html  css  js  c++  java
  • 组合模式——java实现

    问题描述:

    用透明组合模式实现教材中的“文件夹浏览”这个例子。

    类图:

    java代码:

      1 //AbstractFile.java
      2 package shiyan10;
      3 
      4 public abstract class AbstractFile 
      5 {
      6     public abstract void add(AbstractFile element);
      7     public abstract void remove(AbstractFile element);
      8     public abstract void display();
      9 }
     10 //ImageFile.java
     11 package shiyan10;
     12 
     13 public class ImageFile extends AbstractFile
     14 {
     15     private String fileName;
     16     public ImageFile(String filename)
     17     {
     18         this.fileName=new String();
     19         this.fileName=filename;
     20     }
     21     public void add(AbstractFile element)
     22     {
     23         System.out.println("add ImageFile");
     24     }
     25     public void remove(AbstractFile element)
     26     {
     27         System.out.println("remove ImageFile");
     28     }
     29     public void display()
     30     {
     31         System.out.print(fileName);
     32         System.out.println(" ImageFile");
     33     }
     34 }
     35 //TextFile.java
     36 package shiyan10;
     37 
     38 public class TextFile extends AbstractFile
     39 {
     40     private String fileName;
     41     public TextFile(String filename)
     42     {
     43         this.fileName=new String();
     44         this.fileName=filename;
     45     }
     46     public void add(AbstractFile element)
     47     {
     48         System.out.println("add TextFile");
     49     }
     50     public void remove(AbstractFile element)
     51     {
     52         System.out.println("remove TextFile");
     53     }
     54     public void display()
     55     {
     56         System.out.print(fileName);
     57         System.out.println(" TextFile");
     58     }
     59 }
     60 //VideoFile.java
     61 package shiyan10;
     62 
     63 public class VideoFile extends AbstractFile
     64 {
     65     private String fileName;
     66     public VideoFile(String filename)
     67     {
     68         this.fileName=new String();
     69         this.fileName=filename;
     70     }
     71     public void add(AbstractFile element)
     72     {
     73         System.out.println("add VideoFile");
     74     }
     75     public void remove(AbstractFile element)
     76     {
     77         System.out.println("remove VideoFile");
     78     }
     79     public void display()
     80     {
     81         System.out.print(fileName);
     82         System.out.println(" VideoFile");
     83     }
     84 }
     85 //Folder.java
     86 package shiyan10;
     87 import java.util.*;
     88 
     89 public class Folder extends AbstractFile
     90 {
     91     private String fileName;
     92     private ArrayList<AbstractFile> fileList=new ArrayList();
     93     public Folder(String filename)
     94     {
     95         this.fileName=new String();
     96         this.fileName=filename;
     97     }
     98     public void add(AbstractFile element)
     99     {
    100         fileList.add(element);
    101         System.out.println("add Folder");
    102     }
    103     public void remove(AbstractFile element)
    104     {
    105         fileList.remove(element);
    106         System.out.println("remove Folder");
    107     }
    108     public void display()
    109     {
    110         System.out.println(fileName);
    111         for(Object object:fileList)
    112         {
    113             ((AbstractFile)object).display();
    114         }
    115         System.out.println("****Folder display****");
    116     }
    117 }
    118 //Client.java
    119 package shiyan10;
    120 public class Client 
    121 {
    122     public static void main(String a[])
    123     {
    124         AbstractFile obj1,obj2,obj3,obj4;
    125         Folder plate1,plate2,plate3;
    126         obj1=new ImageFile("a.jpg");
    127         obj2=new TextFile("b.txt");
    128         plate1=new Folder("Image_Text");
    129         plate1.add(obj1);
    130         plate1.add(obj2);
    131         
    132         obj3=new VideoFile("c.mp4");
    133         plate2=new Folder("Image_Video");
    134         plate2.add(obj1);
    135         plate2.add(obj3);
    136         
    137         obj4=new ImageFile("d.jpg");
    138         plate3=new Folder("Image_Text_Video_Folder");
    139         plate3.add(plate1);
    140         plate3.add(plate2);
    141         plate3.add(obj4);
    142         
    143         plate3.display();
    144         
    145     }
    146 }

    运行结果:

  • 相关阅读:
    快速幂算法
    TIME-April
    数据结构之splay树
    数据结构学习路线
    智能优化技术(四) 蚁群优化算法
    智能优化学习目录
    模式识别(四)人工神经网络
    模式识别(一) 决策树分类
    模式识别学习
    poj 2676 Sudoku
  • 原文地址:https://www.cnblogs.com/znjy/p/14152843.html
Copyright © 2011-2022 走看看