• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python3 简单实现组合设计模式

python 搞代码 4年前 (2022-01-07) 24次浏览 已收录 0个评论

这篇文章主要介绍了python3 简单实现组合设计模式的方法,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

组合模式是把一个类别归为一个整体,并且组织多个整体之间的关系,使用通过树形结构来描述所有整体。

一般的编写方式为一个类别对象下添加多个该对象的元素,该对象又为其它对象下的元素。简单来说就是一个学校有一个总部,总部下有有师资部、招生部;总部有分校,分校也有。

在我个人看来,设计模式的使用并不局限于书本描述的具体问题的解决,是需要丰富的业务经验才能更好的灵活应用,本人能力有限,在此也是给出一个简单的示例用来说明,额外的灵活运营需要看个人的编写方式。

首先新建一个学校的基类:

 #根 class root: name = '' def __init__(self, name): self.name = name def add(self, root): pass 

以上学校基类初始化方法为接收一个name,并且有一个抽象方法add。

有了一个学校基类后,具体新建一个学校类,继承root基类:

 #学校类 class School(root): childrenroot = [] def add(self, root): self.childrenroot.append(root) 

在以上学校类中,继承了root基类,并且实现了add方法,接收root值,并且把它添加到 childrenroot 列表中,这样可以网当前对象下添加子节点,或者说添加下级对象。

新建一个招生办类以及一个师资部类:

 #招生办 class StudentAdmissionDept(root): def __init__(self, name): self.name = name #师资部 class FacultyDepartment(root): def __init__(self, name): self.name = name

以上内容很简单,都是继承于root,就一个初始化方法。

开始实现调用。首先新建一个学校总部对象,并且往这个总部对象下添加一个招生办对象以及一个师资部对象:

 root = School('总部') root.add(StudentAdmissionDept('总部招生办')) root.add(FacultyDepartment('总部师资部'))

新建好总部对象后,往下添加分校区的对象。分校区的部门设置跟总校一致:

 s1 = School('桂林校区') s1.add(StudentAdmissionDept('桂林校区 招生办')) s1.add(FacultyDepartment('桂林校区 师资部')) root.add(s1)

在配置完第一个桂林校区后,使用root总部的add方法,添加当前桂林校区为下级。

再新建几个校区:

 s2 = School('深圳校区') s2.add(StudentAdmissionDept('深圳校区 招生办')) s2.add(FacultyDepartment('深圳校区 师资部')) root.add(s2) s3 = School('广州校区') s3.add(StudentAdmissionDept('广州校区 招生办')) s3.add(FacultyDepartment('广州校区 师资部')) root.add(s3)  

以上配置方法跟第一个校区配置为root总部校区下级一致。

最后使用遍历打印出各个校区的名字:

 print('\n',root.name,'下级学校层级:\n') for i in root.childrenroot: print(i.name)

结果为:

由于没有排版,以上结果并没有很好的直观显示层级,剩下的只需要自己排版输出即可。

在当前文章对应的代码编写中,最后的新建校区及配置信息,可以新建一个类,封装好该调用、输出方法,可以很方便的使用组合设计模式。

完整代码如下:

 #根 class root: name = '' def __init__(self, name): self.name = name def add(self, root): pass #学校类 class School(root): childrenroot = [] def add(self, root): self.childrenroot.append(root) #招生办 class StudentAdmissionDept(root): def __init__(self, name): self.name = name #师资部 class FacultyDepartment(root): def __init__(self, name): self.name = name root = School('总部') root.add(StudentAdmissionDept('总部招生办')) root.add(FacultyDepartment('总部师资部')) s1 = School('桂林校区') s1.add(StudentAdmissionDept('桂林校区 招生办')) s1.add(Fac<b style="color:transparent">来源gao@dai!ma.com搞$代^码网</b>ultyDepartment('桂林校区 师资部')) root.add(s1) s2 = School('深圳校区') s2.add(StudentAdmissionDept('深圳校区 招生办')) s2.add(FacultyDepartment('深圳校区 师资部')) root.add(s2) s3 = School('广州校区') s3.add(StudentAdmissionDept('广州校区 招生办')) s3.add(FacultyDepartment('广州校区 师资部')) root.add(s3) print('\n',root.name,'下级学校层级:\n') for i in root.childrenroot: print(i.name)

以上就是python3 简单实现组合设计模式的详细内容,更多关于Python 实现组合设计模式的资料请关注gaodaima搞代码网其它相关文章!

以上就是python3 简单实现组合设计模式的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python3 简单实现组合设计模式

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址