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

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

    组合模式结构图:

    透明方式与安全方式:

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

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

    代码实现:

  • 相关阅读:
    centos7安装nginx和php7启动脚本
    centos7 安装nginx遇到的坑
    php7.2 编译遇到的坑
    yum源更新
    redis
    nginx日志分割
    Docker部署LNMP完整教程
    浅谈JavaScript词法分析步骤
    PHP面向对象中的重要知识点(一)
    Mysql精华版(命令大全)
  • 原文地址:https://www.cnblogs.com/LionheartCGJ/p/7011777.html
Copyright © 2011-2022 走看看