Python 官方文档:入门教程 => 点击学习
目录介绍实现抽象构件叶子节点组合节点测试总结优点缺点应用场景介绍 Java组合模式(Composite Pattern)是一种结构型设计模式,允许你将对象组合成树状结构,并且能像使用
Java组合模式(Composite Pattern)是一种结构型设计模式,允许你将对象组合成树状结构,并且能像使用独立对象一样使用它们.
组合模式包含以下3种角色:
组合模式的核心思想是将叶子节点和组合节点看作同一种类型的对象,让它们拥有相同的接口,从而在使用时能够无差别对待.
假设我们正在编写一个文件系统的程序,需要实现对目录和文件的管理.我们可以使用组合模式来处理这种问题.
public abstract class AbstractFile {
protected String name;
public AbstractFile(String name) {
this.name = name;
}
public abstract void display();
public abstract void add(AbstractFile file);
public abstract void remove(AbstractFile file);
}
public class File extends AbstractFile {
public File(String name) {
super(name);
}
@Override
public void display() {
System.out.println("这是文件:" + name);
}
@Override
public void add(AbstractFile file) {
throw new UnsupportedOperationException("文件不支持添加操作");
}
@Override
public void remove(AbstractFile file) {
throw new UnsupportedOperationException("文件不支持删除操作");
}
}
public class Directory extends AbstractFile {
private List<AbstractFile> fileList = new ArrayList<>();
public Directory(String name) {
super(name);
}
@Override
public void add(AbstractFile file) {
fileList.add(file);
}
@Override
public void remove(AbstractFile file) {
fileList.remove(file);
}
@Override
public void display() {
System.out.println("这是目录:" + name);
fileList.forEach(AbstractFile::display);
}
}
public class Demo {
public static void main(String[] args) {
AbstractFile root = new Directory("根目录");
AbstractFile file1 = new File("文件1");
AbstractFile file2 = new File("文件2");
AbstractFile file3 = new File("文件3");
AbstractFile file4 = new File("文件4");
AbstractFile directory1 = new Directory("目录1");
AbstractFile directory2 = new Directory("目录2");
directory1.add(file1);
directory1.add(file2);
directory1.add(directory2);
directory2.add(file3);
directory2.add(file4);
root.add(directory1);
root.display();
}
}
以上代码是一个完整的Java组合模式的示例,实现了一个简单的文件系统结构.根据文件和目录的特点,将其抽象为AbstractFile类,并定义了name属性以及抽象方法add();remove();display()并实现了两个具体的子类File和Directory.
在Directory类中,使用了一个List来储存文件和子目录,实现了add()和remove()方法,可以像其中添加和删除文件和子目录.同时display()方法遍历并打印出其子节点信息.
在File类中,由于文件没有子节点,因此在add()和remove()方法中抛出了UnsupportedOperationException异常,同时display()直接打印出文件信息.
组合模式是一种结构型设计模式,允许我们将对象组合成属性结构来表现整体/部分层次结构,使得用户对单个对象和组合对象使用具有一致性.
组合模式常用于处理整体/部分层次结构的问题,适用于以下场景:
到此这篇关于Java实现树形结构管理的组合设计模式的文章就介绍到这了,更多相关Java组合模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java实现树形结构管理的组合设计模式
本文链接: https://www.lsjlt.com/news/210956.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0