组合模式

组合模式:
	用于树式结构,即对象包含对象的问题
1.定义抽象类,设置通用方法,都要重写的设为抽象
	只有一部分子类要重写的,设为具体方法
2.各自定义具体类继承抽象类,根据需要重写方法
3.客户端通过对抽象类的操作进而完成树形结构

1.定义抽象类,设置通用方法,都要重写的设为抽象
	只有一部分子类要重写的,设为具体方法
	abstract class Node{
		protected String nodeName;
		public abstract void display();
		public void addNode(Node node) {};
		public Node(String nodeName) {
			this.nodeName = nodeName;
		}
	}
2.定义具体类继承抽象类,根据需要重写方法
	class Filer extends Node{
		public Filer(String nodeName) {
			super(nodeName);
		}
		@Override
		public void display() {
			System.out.println(nodeName);
		}
	}
	
	class Dictory extends Node{
		public Dictory(String nodeName) {
			super(nodeName);
		}
		private List<Node> nodeList = new ArrayList<>();
		
		@Override
		public void addNode(Node node) {
			nodeList.add(node);
		}
		
		@Override
		public void display() {
			System.out.println(nodeName);
			for(Node node: nodeList) {
				node.display();
			}
		}
	}	
3.客户端通过对抽象类的操作进而完成树形结构
	public static void createTree(Node node) {
		File file = new File(node.nodeName);
		File[] files = file.listFiles();
		for(File f:files) {
			if(f.isFile()) {
				Filer filer = new Filer(f.getAbsolutePath());
				node.addNode(filer);
			}
			if(f.isDirectory()) {
				Dictory dictory = new Dictory(f.getAbsolutePath());
				node.addNode(dictory);
				createTree(dictory);
			}
		}
	}
	public static void main(String[] args) {
		Node node = new Dictory("D:\\7-zip");
		createTree(node);
		node.display();
	}		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值