一、组合模式组合模式组合多个对象形成树形结构以表示具有部分-整体关系的层次结构。组合模式可以让客户端统一对待单个对象和组合对象结构型。组合模式角色抽象构件可以是接口也可以是抽象类叶子构件它在组合构件中表示叶子节点对象叶子节点没有子节点实现了抽象构建中的定义的方法容器构件包含子节点子节点可以是叶子节点也可以是容器节点。二、实现在src目录下新建一个composite文件夹在该文件夹下新建一个composite.cj文件和composite.drawio文件。类图核心代码package DesignPattern.composite import std.collection.* // 抽象构件类 public abstract class Composite { public func create(): Unit } // 容器构件类 public class Window : Composite { private let composites: ArrayListComposite ArrayListComposite() public Window(private let name: String) {} public override func create() { println(在${this.name}里创建:) for(composite in composites) { composite.create() } } public func add(composite: Composite) { composites.add(composite) } public func remove(index: Int64) { composites.remove(at: index) } public func getChild(index: Int64): Composite { return composites[index] } } // 叶子构件 public class Text : Composite { public override func create() { println(文本组件) } } public class Button : Composite { public override func create() { println(按钮组件) } }测试代码package DesignPattern import DesignPattern.composite.* main(): Int64 { let window Window(画板1) window.add(Text()) window.add(Button()) window.add(Text()) window.add(Button()) window.create() return 0 }三、优缺点优点可以清楚的定义分层次的复杂对象让客户端忽略了层次的差异客户端可以一致地适用一个组合结构或其中单个对象简化了客户端代码在组合模式中新增容器构件和叶子构件很方便无需修改源代码符合开闭原则为树形结构的面向对象实现提供了一种灵活的解决方案。缺点在新增构件时很难对容器中的构件类型进行限制。四、适用环境在具有整体和部分的层次结构中希望通过一种方式忽略整体与部分的差异在需要使用面向对象语言开发树型结构的系统时。五、小结本章为大家详细的介绍了仓颉设计模式中组合模式的内容下一章为大家带来组合模式练习题的内容。最后创作不易如果大家觉得我的文章对学习仓颉设计模式有帮助的话就动动小手点个免费的赞吧收到的赞越多我的创作动力也会越大哦谢谢大家