设计模式学习十二:组合模式
一.概念
???? 组合模式允许你将对象组合成树形结构来表现"整体/部分"层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
?
二.UML
三.实例分析
???? 网上购物的时候,我们会发现,快递时一层一层下来的,我在北京朝阳区六里屯街道买了一个东西,物品会依次经过六里屯街道-朝阳区-深圳-深圳南山这样的顺序邮寄到我手里。我们可以看出,每个地区都会有一个大的投递点,然后再往下细分。从中,我抽象了这么几个类。说明:顺丰快递总公司实际在深圳,但为了更清楚的说明组合模式,我将"顺丰公司"放在了一个更高的层次。
?
?
???? SFCompany
?
四.使用场景及使用感受
需求中体现的是整体和部分的层次关系,以及用户希望忽略整体与部分的不同,统一的使用整体对象和部分对象时,就应该考虑组合模式。组合模式让你可以优化处理递归或分级数据结构。如文件系统结构。
?
public static void showDetails(File f) {//如果是目录if(f.isDirectory()){//拿到跟目录下所有文件,迭代后递归File[] files = f.listFiles();for(File file : files) {showDetails(file);}//如果是文件,打印}else {System.out.println(f.getAbsolutePath());}}