十四、组合模式

编程入门 行业动态 更新时间:2024-10-11 15:19:56

十四、<a href=https://www.elefans.com/category/jswz/34/1769978.html style=组合模式"/>

十四、组合模式

组合模式

  • 1、什么是组合模式
  • 2、组合模式的结构
  • 3、组合模式的角色和职责
  • 4、代码实现

1、什么是组合模式

  • Composite模式也叫组合模式,是构造型的设计模式之一。通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树。

2、组合模式的结构

3、组合模式的角色和职责

  • Component (树形结构的节点抽象)
    • 为所有的对象定义统一的接口(公共属性,行为等的定义)
    • 提供管理子节点对象的接口方法
    • [可选]提供管理父节点对象的接口方法
  • Leaf (树形结构的叶节点)
  • Component的实现子类
  • Composite(树形结构的枝节点)
  • Component的实现子类

4、代码实现

package com.example.demo01;import java.util.List;/*** 文件节点抽象(是文件和目录的父类)* @author Guardian**/
public interface IFile {//显示文件或者文件夹名称public void display();//添加public boolean add(IFile file);//移除public boolean remove(IFile file);//货的子节点public List<IFile> getChild();
}
package com.example.demo01;import java.util.List;public class File implements IFile{private String name;public File(String name){this.name = name;}@Overridepublic void display() {System.out.println(name);}@Overridepublic List<IFile> getChild() {return null;}@Overridepublic boolean add(IFile file) {// TODO Auto-generated method stubreturn false;}@Overridepublic boolean remove(IFile file) {// TODO Auto-generated method stubreturn false;}}
package com.example.demo01;import java.util.ArrayList;
import java.util.List;public class Folder implements IFile{private String name;private List<IFile> children;public Folder(String name) {this.name = name;this.children = new ArrayList<IFile>();}@Overridepublic void display() {System.out.println(name);}@Overridepublic List<IFile> getChild() {return children;}@Overridepublic boolean add(IFile file) {return children.add(file);}@Overridepublic boolean remove(IFile file) {return children.remove(file);}}
package com.example.demo01;import java.util.List;import org.junit.Test;public class MainClass {@Testpublic void test01(){//C盘(一级目录)Folder rootFolder = new Folder("C:");//guardian目录(二级目录)Folder guardianFolder = new Folder("guardian");//guardian.txt文件File guardianFile = new File("guardian.txt");rootFolder.add(guardianFolder);rootFolder.add(guardianFile);//iguardian目录(三级目录)Folder iguardianFolder = new Folder("iguardian");File iguardianFile = new File("iguardian.txt");guardianFolder.add(iguardianFolder);guardianFolder.add(iguardianFile);//iiguardian目录(四级目录)Folder iiguardianFolder = new Folder("iiguardian");File iiguardianFile = new File("iiguardian.txt");iguardianFolder.add(iiguardianFolder);iguardianFolder.add(iiguardianFile);displayTree(rootFolder,0);}public static void displayTree(IFile rootFolder, int deep){for (int i = 0; i < deep; i++) {System.out.print("--");}//显示自身的名称rootFolder.display();//获得子树List<IFile> children = rootFolder.getChild();//遍历子树for (IFile iFile : children) {if (iFile instanceof File) {for (int i = 0; i <= deep; i++) {System.out.print("--");}iFile.display();}else {displayTree(iFile,deep+1);}}}
}

更多推荐

十四、组合模式

本文发布于:2024-03-09 19:02:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1725828.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:组合   模式   十四

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!