java23种设计模式(五)--组合模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java23种设计模式(五)--组合模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3325字,纯文字阅读大概需要5分钟。
内容图文
转载:https://www.cnblogs.com/V1haoge/p/6489827.html
定义:所谓组合模式,其实说的是对象包含对象的问题,通过组合的方式(在对象内部引用对象)来进行布局,我认为这种组合是区别于继承的,而另一层含义是指树形结构子节点的抽象(将叶子节点与树枝节点抽象为子节点),区别于普通的分别定义叶子节点与数枝节点的方式。
使用场景:这种组合模式正是应树形结构而生,所以组合模式的使用场景就是出现树形结构的地方。比如:文件目录显示,多及目录呈现等树形结构数据的操作。
1、创建抽象类:Node
1 /** 2 * author:YZH 3 * time: 2019/6/12 15:36 4 * description: 抽象类Node 5 **/ 6 public abstract class Node { 7 8 protected String name; 9 10 public Node(String name){ 11 this.name = name; 12 } 13 //新增节点:文件节点无此方法,目录节点重写此方法 14 public void addNode(Node node) throws Exception{ 15 throw new Exception("Invalid exception"); 16 } 17 //显示节点:文件与目录均实现此方法 18 abstract void display(); 19 }View Code
2、创建叶子节点(继承Node)
1 /** 2 * author:YZH 3 * time: 2019/6/12 15:39 4 * description: 文件实现类(叶子节点) 5 **/ 6 public class Filer extends Node { 7 8 public Filer(String name) { 9 super(name); 10 } 11 12 @Override 13 void display() { 14 System.out.println(name); 15 } 16 }View Code
3、创建非叶子节点(继承Node)
1 /** 2 * author:YZH 3 * time: 2019/6/12 15:40 4 * description: 目录实现类(非叶子节点) 5 **/ 6 public class Noder extends Node{ 7 private List<Node>nodeList = new ArrayList<>(); 8 9 public Noder(String name) { 10 super(name); 11 } 12 13 @Override 14 public void addNode(Node node) throws Exception { 15 nodeList.add(node); 16 } 17 18 /** 19 * 递归循环显示 20 */ 21 @Override 22 void display() { 23 System.out.println(name); 24 for (Node node : nodeList) { 25 node.display(); 26 } 27 } 28 }View Code
4、测试代码
1 /** 2 * author:YZH 3 * time: 2019/6/12 15:43 4 * description: 测试代码 5 **/ 6 public class Client { 7 public static void createNode(Node node) throws Exception { 8 File file = new File(node.name); 9 File[] f = file.listFiles(); 10 for(File fi : f){ 11 if(fi.isFile()){ 12 Filer filer = new Filer(fi.getAbsolutePath()); 13 node.addNode(filer); 14 } 15 if(fi.isDirectory()){ 16 Noder noder = new Noder(fi.getAbsolutePath()); 17 node.addNode(noder); 18 createNode(noder);//使用递归生成树结构 19 } 20 } 21 } 22 23 public static void main(String[] args) { 24 Node noder = new Noder("C:\\Users\\11655\\Desktop\\gbase"); 25 try { 26 createNode(noder); 27 } catch (Exception e) { 28 e.printStackTrace(); 29 } 30 noder.display(); 31 } 32 }View Code
运行结果:
1 C:\Users\11655\Desktop\gbase 2 C:\Users\11655\Desktop\gbase\2019-06-09 11时.xls 3 C:\Users\11655\Desktop\gbase\drivers 4 C:\Users\11655\Desktop\gbase\drivers\gbase8a 5 C:\Users\11655\Desktop\gbase\drivers\gbase8a\gbase-connector-java-8.3.81.53-build-54.5.1-bin.jar 6 C:\Users\11655\Desktop\gbase\drivers\gbase8a\log.properties 7 C:\Users\11655\Desktop\gbase\drivers\gbase8s 8 C:\Users\11655\Desktop\gbase\drivers\gbase8s\ifxjdbc.jar 9 C:\Users\11655\Desktop\gbase\drivers\gbase8tView Code
内容总结
以上是互联网集市为您收集整理的java23种设计模式(五)--组合模式全部内容,希望文章能够帮你解决java23种设计模式(五)--组合模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】