Python组合模式

组合模式,像树的枝和叶一样进行组合。

class Branch(object):
    def __init__(self):
        super().__init__()
        self.branch = []
        self.leaf = []

    def add(self, obj):
        if type(obj) == Branch:
            self.branch.append(obj)
        else:
            self.leaf.append(obj)

    def __str__(self):
        content = ""
        for branch in self.branch:
            content += str(branch) + '\n'
        return "branch" + str([str(leaf) for leaf in self.leaf]) + '\n' + content


class Leaf(object):
    def __init__(self):
        super().__init__()

    def add(self):
        pass

    def __str__(self):
        return "leaf"


def main():
    branch_a = Branch()
    branch_a.add(Leaf())
    branch_a.add(Leaf())

    branch_b = Branch()
    branch_b.add(Leaf())
    branch_b.add(branch_a)

    branch_main = Branch()
    branch_main.add(branch_b)

    print(branch_main)


if __name__ == '__main__':
    main()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,822评论 25 709
  • “写作中心”文本写作课程(草案) 齐红雨 【交流提问】 1.读了大量的文章、著作,为什么大多数学生依然不会写作? ...
    为为道来阅读 1,436评论 0 2
  • 1 场景问题# 1.1 商品类别树## 考虑这样一个实际的应用:管理商品类别树。 在实现跟商品有关的应用系统的时候...
    七寸知架构阅读 6,122评论 10 59
  • 对于一个人来说,书看多了心会宽,而路走多了眼会毒。爱思考,能静心,保持一颗与世无争的心态,活在这个利欲熏...
    独行者dave阅读 183评论 0 0
  • 标签(空格分隔): php Author :tkvern 工具介绍 | 工具 | 描述 | 版本 ...
    tkvern阅读 312评论 0 0