组合模式

   组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。

适用场景

  • 希望客户端可以忽略组合对象与单个对象的差异时

  • 处理一个树形结构

优点

  • 清楚地定义分层次的复杂对象,表示对象的全部或部分层次

  • 让客户端忽略了层次的差异,方便对整个层次结构进行控制

  • 简化客户端代码

  • 符合开闭原则

缺点

  • 限制类型时比较复杂

  • 使设计变得更加抽象

下面我们引出一个应用场景,假设,我们有一个课程目录,如何使用组合模式在实现这个目录呢?

Golang Demo

Java Demo

补充另一个版本的Java/Scala Demo 以及源码解析

Java Demo_

Scala Demo

UML_

源码解析

Last updated

Was this helpful?