组合模式

来源:互联网 发布:linux 搭建cdn 编辑:程序博客网 时间:2024/06/11 01:59





package com.samsung.demo;import java.util.*;import org.junit.Test;abstract class iFile {int add(iFile i) {return 0;}int remove(iFile i) {return 0;}protected String name;public String getName() {// TODO Auto-generated method stubreturn name;}public void setName(String name) {// TODO Auto-generated method stubthis.name = name;}public void display(iFile f) {}}class File extends iFile {@Overridepublic int add(iFile i) {// TODO Auto-generated method stubreturn 0;}@Overridepublic int remove(iFile i) {// TODO Auto-generated method stubreturn 0;}public void display(iFile f) {System.out.println(this.name);}}class Folder extends iFile {private ArrayList<iFile> list_file = new ArrayList();public ArrayList<iFile> getList_file() {return list_file;}@Overridepublic int add(iFile i) {// TODO Auto-generated method stublist_file.add(i);return 0;}@Overridepublic int remove(iFile i) {// TODO Auto-generated method stublist_file.remove(i);return 0;}public void display(iFile ifile) {Folder folderTmp = null;File fileTmp = null;ArrayList<iFile> listTmp = null;if (ifile instanceof File) {fileTmp = (File) ifile;fileTmp.display(fileTmp);} else {folderTmp = (Folder) ifile;listTmp = folderTmp.getList_file();for (int i = 0; i < listTmp.size(); i++) {iFile f = listTmp.get(i);display(f);}}}}public class TestMap {public static void main(String str[]) {iFile root = new Folder();root.setName("home");iFile file = new File();file.setName("test.cpp");root.add(file);iFile folder = new Folder();folder.setName("lili");iFile eflcpp_file = new File();eflcpp_file.setName("mysql.cpp");iFile json_file = new File();json_file.setName("json.cpp");folder.add(eflcpp_file);folder.add(json_file);root.add(folder);iFile bigfolder = new Folder();bigfolder.setName("files");iFile javafile = new File();javafile.setName("javafile.cpp");iFile sqlite_file = new File();sqlite_file.setName("sqlitefile.cpp");bigfolder.add(javafile);bigfolder.add(sqlite_file);folder.add(bigfolder);root.display(root);}}


test.cpp
efl.cpp
json.cpp
javafile.cpp
sqlitefile.cpp


0 0