0 设计模式
不了解设计模式的小伙伴可以通过这篇文章了解一下什么是设计模式
https://blog.csdn.net/qq_42874315/article/details/120006447?spm=1001.2014.3001.5502
1 组合模式
组合模式,又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。树状结构专用模式。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。
2 实现思路
3 需要的类
-
抽象结点Node
-
枝(继承Node)
存储一个或多个叶子的集合
还包含一个add方法,主要的作用是向集合中添加叶子的
-
叶(继承Node)
存储内容
-
测试类
测试类中包含一个打印树状格式的方法
4 具体实现
4.1 Node
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/9/14 19:35
*/
public abstract class Node {
abstract public void print();
}
4.2 BranchNode
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/9/14 19:42
*/
public class BranchNode extends Node{
List<Node> nodes = new ArrayList<>();
String name;
public BranchNode(String name) {
this.name = name;
}
@Override
public void print() {
System.out.println(name);
}
public void add(Node node){
nodes.add(node);
}
}
4.3 LeafNode
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/9/14 19:50
*/
public class LeafNode extends Node{
String content;
public LeafNode(String content){
this.content = content;
}
@Override
public void print() {
System.out.println(content);
}
}
4.4 测试类
/**
* @Author ChenJiahao(程序员五条)
* @Date 2021/9/14 19:42
*/
public class Test {
public static void main(String[] args) {
BranchNode root = new BranchNode("root");
BranchNode chapter1 = new BranchNode("chapter1");
BranchNode chapter2 = new BranchNode("chapter2");
Node c11 = new LeafNode("c11");
Node c12 = new LeafNode("c12");
BranchNode b21 = new BranchNode("section21");
Node c211 = new LeafNode("c211");
Node c212 = new LeafNode("c212");
root.add(chapter1);
root.add(chapter2);
chapter1.add(c11);
chapter1.add(c12);
chapter2.add(b21);
b21.add(c211);
b21.add(c212);
// 递归打印出树 第二个参是为了看结构的 深度
tree(root,0);
}
static void tree(Node b, int depth) {
for (int i = 0; i < depth; i++) {
System.out.print("--");
}
b.print();
if (b instanceof BranchNode){
// 说明下面有子节点
for (Node n :((BranchNode) b).nodes){
tree(n,depth + 1);
}
}
}
}
5 思维导图
6 示例源码地址
https://github.com/ChenJiahao0205/design-pattern/tree/master
最后
我是通过马士兵老师的视频和菜鸟教程学习的,部分内容可能会有雷同
想阅读更多设计模式相关文章,欢迎到我的专栏【设计模式学习笔记】、【设计模式】中去查看
在23篇设计模式文章发布完成之后,我会公开完整的思维导图,点关注,不迷路
感谢大家看到这里,文章如有不足,欢迎大家指出;彦祖点个赞吧彦祖点个赞吧彦祖点个赞吧,欢迎关注程序员五条!