python学习 - 设计模式 - 组合模式

ops/2024/12/23 0:45:28/

组合模式 Composite , 将对象组组合成树形结构以表示’部分-整体’ 的层次结构.组合模式使得用户对单个对象的组合对象的使用具有一致性

python">#!/usr/bin/python
# -*- coding:UTF-8 -*-
# @File    : d1.py
# @Software: PyCharm"""
组合模式 Composite , 将对象组组合成树形结构以表示'部分-整体' 的层次结构.组合模式使得用户对单个对象的组合对象的使用具有一致性
"""from abc import ABCMeta, abstractmethod# 组合的对象声明接口,在适当情况下,实现所有类共有接口的默认行为,声明一个接口用于访问和管理Component的子部件
class Compoente(object):pass__metaclass__ = ABCMetadef __init__(self, name):self.name = namedef Add(self, c): passdef Remove(self, c): passdef Display(self, deph): pass# 在组合中表示叶节点对象叶节点没有子节点
class Leaf(Compoente):pass# def __init__(self, name):#     self.name = self.namedef Add(self, c):print "不能添加下级节点"def Remove(self, c):print "不能删除下级节点"def Display(self, deph):passstrTemp = ""for i in range(deph):strTemp += strTemp + "-"print deph, self.name# 定义有枝节点的行为,用来储存子部件有关操作比如增加Add和Remove
class Composite(Compoente):passdef __init__(self, name):self.name = nameself.children = []def Add(self, comp):self.children.append(comp)def Remove(self,comp):passself.children.remove(comp)def Display(self, deph):strTemp = ""for i in range(deph):strTemp += strTemp + "-"print deph, self.nameif __name__ == '__main__':pass#生成树根root = Composite("这里是树根")root.Add("叶子1")root.Add("叶子2")root.Display(5)comp = Composite("Composite X")comp = ""

http://www.ppmy.cn/ops/52885.html

相关文章

常见概念之压力测试

简介 压力测试(Stress Testing)通常包含以下几个主要内容: 负载测试(Load Testing) 模拟大量并发用户访问系统,测试系统在高负载下的表现。关注系统的响应时间、吞吐量、资源利用率等指标。确定系统的最大承载能力。 容量测试(Capacity Testing) 测试系统在超出正常预期负…

华为HCIP Datacom H12-821 卷13

1.多选题 以下关于二层漫游和三层漫游的描述,以下说法正确的是? A、如果 STA 漫游时前后关联的 VLAN ID 相同则一定属于二层漫游 B、二层漫游是指客户端在同一子网内漫游 C、三层漫游是指客户端在不同子网间漫游 D、三层漫游前后 STA 关联的 AP 服务集上的 VL AN 必须相…

【机器学习】线性回归:从基础到实践的深度解析

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 线性回归:从基础到实践的深度解析引言一、线性回归基础1.1 定义与目…

Python数据可视化-地图可视化

1.首先绘制实现数据可视化的思维导图 具体要实现什么功能-怎么处理,先把思路写好 数据来源: 爬取的数据 运行结果: 部分代码: 完整代码请在下方↓↓↓👇获取 转载请注明出处!

【Python实战因果推断】3_因果效应异质性3

目录 Effect by Model Quantile Cumulative Effect Effect by Model Quantile 制作 CATE 模型的想法源于发现哪些单元对治疗更敏感的必要性,目的是更有效地分配治疗。这种想法源于对个性化的渴望。如果这是我们的目标,那么如果能以某种方式将单元从更…

Sora:探索AI视频模型的无限可能

随着人工智能技术的飞速发展,AI在视频处理和生成领域的应用正变得越来越广泛。Sora,作为新一代AI视频模型,展示了前所未有的潜力和创新能力。本文将深入探讨Sora的功能、应用场景以及它所带来的革命性变化。 一、Sora的核心功能 1.1 视频生…

Ubuntu磁盘分区和挂载 虚拟机扩容 逻辑卷的创建和扩容保姆及教程

目录 1、VMware虚拟机Ubuntu20.04系统磁盘扩容 2、Linux的磁盘分区和挂载 3、创建逻辑卷和逻辑卷的扩容 1、VMware虚拟机Ubuntu20.04系统磁盘扩容 通过下图可以看出我们的根磁盘一共有20G的大小,现在我们把它扩容为30G 注:如果你的虚拟机有快照是无…

ArcGIS定义1.5度带坐标系与投影转换

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 对于ArcGIS如何定义高斯克吕格3度带、6度带,我相信大部分人都是比较清楚的&#xff0…