关于组合模式我所知道的

简介: 关于组合模式我所知道的

image.png


关键词:结构型 CompoundPattern 树形结构


解决什么问题


组合模式,将一组对象组织成树形结构。

将单个对象和组合对象都看做树中的节点,以统一处理逻辑。

并且它利用树形结构的特点,递归地处理每个子树,依次简化代码实现。

使用组合模式的前提在于,你的业务场景必须能够表示成树形结构。


应用场景


主要是用来处理树形结构数据

特别是我们在开发期间不确定这棵树到底存在多少层次的时候。

类与类之间不是父子关系,而是聚合关系。就像 ToggleFlyOut 之间的关系一样。

function Toggle({ open, toggle }) {
  return (
    <div className="flyout-btn" onClick={() => toggle(!open)}>
      <Icon />
    </div>
  );
}
function List({ children, open }) {
  return open && <ul className="flyout-list">{children}</ul>;
}
function Item({ children }) {
  return <li className="flyout-item">{children}</li>;
}
function FlyOut(props) {
  const [open, toggle] = useState(false);
  return (
    <div className={`flyout`}>
      {React.Children.map(props.children, (child) =>
        React.cloneElement(child, { open, toggle })
      )}
    </div>
  );
}
FlyOut.Toggle = Toggle;
FlyOut.List = List;
FlyOut.Item = Item;


具体实践

react 实现


image.png


原生实现


image.png


参考资料

refactoringguru 组合模式

patterns compound-pattern


目录
打赏
0
0
0
0
26
分享
相关文章
C#一分钟浅谈:组合模式与外观模式
【10月更文挑战第15天】本文介绍了面向对象设计模式中的组合模式和外观模式。组合模式通过树形结构表示“部分-整体”的层次关系,适用于文件系统、图形界面等场景;外观模式提供统一接口简化复杂系统的使用,适用于视频播放器等多模块系统。文章详细解释了这两种模式的基本概念、应用场景、实现方式及常见问题和解决方法,帮助读者更好地理解和应用。
69 9
11.组合模式设计思想
本文详细介绍了组合模式的设计思想和实现方法,涵盖组合模式的基础概念、实现步骤、实例演示、实现方式、优缺点分析等内容。通过具体的代码案例,展示了如何使用组合模式来处理具有层次结构的对象,如文件系统和购物清单,使客户端可以一致地处理单个对象和组合对象。文章还探讨了透明式和安全式组合模式的区别,并提供了设计建议和适用场景。适合初学者和有一定经验的开发者阅读。
73 3
Java设计模式-组合模式(13)
Java设计模式-组合模式(13)
Java设计模式【九】:组合模式
Java设计模式【九】:组合模式
72 0
Java设计模式之组合模式详解
Java设计模式之组合模式详解
|
11月前
|
结构型 组合模式
结构型 组合模式
45 0
我学会了,组合模式
组合模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
133 0
我学会了,组合模式
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等