组合模式-java
package u10; public class Client { public static void main(String a[]) { AbstractFile obj1, obj2, obj3, obj4, obj5; Folder plate1, plate2, plate3; obj1 = new ImageFile("111"); obj2 = new TextFile("222"); plate1 = new Folder("333"); plate1.add(obj1); plate1.add(obj2); obj3 = new VideoFile("444"); obj4 = new VideoFile("555"); plate2 = new Folder("666"); plate2.add(obj3); plate2.add(obj4); obj5 = new ImageFile("777"); plate3 = new Folder("888"); plate3.add(plate1); plate3.add(plate2); plate3.add(obj5); plate3.display(); } }
package u10; import java.util.ArrayList; public class Folder extends AbstractFile { private String fileName; private ArrayList fileList=new ArrayList(); public Folder(String filename) { this.fileName=new String(); this.fileName=filename; } public void add(AbstractFile element) { fileList.add(element); System.out.println("Folder:add"); } public void remove(AbstractFile element) { fileList.remove(element); System.out.println("Folder:remove"); } public void display() { for(Object object:fileList) { ((AbstractFile)object).display(); } System.out.println("Folder:display"); } }
package u10; public class ImageFile extends AbstractFile { private String fileName; public ImageFile(String filename) { this.fileName=new String(); this.fileName=filename; }
package u10; public class TextFile extends AbstractFile { private String fileName;
package u10; public class VideoFile extends AbstractFile { private String fileName; public VideoFile(String filename) {
package u10; public abstract class AbstractFile { public abstract void add(AbstractFile element); public abstract void remove(AbstractFile element); public abstract void display(); }
this.fileName=new String(); this.fileName=filename; } public void add(AbstractFile element) { System.out.println("VideoFile:add"); } public void remove(AbstractFile element) { System.out.println("VideoFile:remove"); } public void display() { System.out.println(fileName); System.out.println("VideoFile:display"); } }
public TextFile(String filename) { this.fileName=new String(); this.fileName=filename; } public void add(AbstractFile element) { System.out.println("TextFile:add"); } public void remove(AbstractFile element) { System.out.println("TextFile:remove"); } public void display() { System.out.println(fileName); System.out.println("TextFile:display"); } }
public void add(AbstractFile element) { System.out.println("ImageFile:add"); } public void remove(AbstractFile element) { System.out.println("ImageFile:remove"); } public void display() { System.out.println(fileName); System.out.println("ImageFile:display"); } }