zoukankan      html  css  js  c++  java
  • 组合模式-Composite

    组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

    组合模式结构图:

    透明方式与安全方式:

    • 透明方式:在Component中声明所有用来管理子对象的方法,例如add remove的等。这样继承Component的所有子对象都具备了add和remove方法。这样做的好处是叶节点和树枝节点对于外界没有区别,他们具有完全一致的行为接口。但是问题也很明显,因为Leaf类本身不具备add和remove方法的功能,所以实现它是完全没有意义的。
    • 安全方式:在Component中不去声明add和remove方法,那么子类Leaf也就不需要去实现它,而是在Component声明所有用来管理子类对象的方法,不过由于不够透明,所以树叶和树枝类将具有不同的方法,客户端在调用的时候需要做相应的判断,带来了不便。

    何时使用组合模式:需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同时,统一使用组合结构中的所有对象时,就因该考虑用组合模式了。

    代码实现:

  • 相关阅读:
    Scars To Your Beautiful
    【BZOJ1833】【ZJOI2010】数字计数(数位DP)
    滑块拼图
    神经元(prufer序列+dp)
    sequence(dp+hash+二分搜索+前缀和优化)
    循环移位(后缀自动机)
    MST(最小生成树+倍增)
    nyoj 845【水】
    分割问题【知识点】
    扩展欧几里得【知识点】
  • 原文地址:https://www.cnblogs.com/LionheartCGJ/p/7011777.html
Copyright © 2011-2022 走看看