关于组合模式我所知道的

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

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


目录
相关文章
|
4月前
|
存储 安全
结构型 组合模式
结构型 组合模式
17 0
|
6月前
|
设计模式 Java 容器
设计模式~组合模式(composite)-16
目录 (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例 代码
30 0
|
8月前
|
设计模式 安全 Java
设计模式-结构型模式:组合模式
设计模式-结构型模式:组合模式
|
11月前
|
设计模式 Java 数据安全/隐私保护
Java设计模式-组合模式(Composite)
Java设计模式-组合模式(Composite)
|
11月前
|
存储 设计模式 安全
结构型模式-组合模式
结构型模式-组合模式
63 0
|
设计模式
我学会了,组合模式
组合模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
82 0
我学会了,组合模式
|
设计模式 Java 容器
组合模式
组合模式
|
安全 Java 容器
结构型:组合模式 Composite
主要内容有: 该模式的介绍,包括: 引子、意图(大白话解释) 类图、时序图(理论规范) 该模式的代码示例:熟悉该模式的代码长什么样子 该模式的优缺点:模式不是万金油,不可以滥用模式 该模式的应用案例:了解它在哪些重要的源码中被使用
133 0
|
存储 设计模式 Java
浅谈JAVA设计模式之——组合模式(Composite)
将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性。
197 0
浅谈JAVA设计模式之——组合模式(Composite)
|
Java 设计模式