设计模式——组合模式+案例

先给个代码地址吧

https://github.com/yyfyyf1994/knowledge/tree/master/src/yyf/designpatterns/composite


组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。


组合模式主要的结构:

1.Component 是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。
2.Leaf 在组合中表示叶子结点对象,叶子结点没有子结点。
3.Composite 定义有枝节点行为,用来存储子部件,在Component接口中实现与子部件有关操作,如增加(add)和删除(remove)等。

本代码案例描述了,一个文件系统的结构。其中Composite 为为文件夹Leaf 为文件,对待一个文件系统中的文件跟文件夹一致性对待去遍历。

具体代码在github仓库里面

package yyf.designpatterns.composite;

import yyf.designpatterns.composite.comonpent.AbstractFile;
import yyf.designpatterns.composite.composite.Folder;
import yyf.designpatterns.composite.leaf.ImageFile;
import yyf.designpatterns.composite.leaf.TextFile;
import yyf.designpatterns.composite.leaf.VideoFile;

/**
 * 测试组合模式
 * 
 * @author Yu Yufeng
 *
 */
public class Test {

	public static void main(String[] args) {
		AbstractFile folder1 = new Folder("文件夹1");
		AbstractFile folder2 = new Folder("文件夹2");
		AbstractFile folder3 = new Folder("文件夹3");
		AbstractFile folder4 = new Folder("文件夹4");

		AbstractFile image1 = new ImageFile("图片1");
		AbstractFile image2 = new ImageFile("图片2");
		AbstractFile video1 = new VideoFile("视频1");
		AbstractFile text1 = new TextFile("文本1");

		folder1.add(folder2);
		folder1.add(folder3);
		folder3.add(text1);

		folder2.add(folder4);
		folder2.add(image1);
		folder2.add(image2);

		folder4.add(video1);

		folder1.display(0);
	}

}


你可能感兴趣的:(设计模式)