wordpress lamp 建站,手机网站建设代理商,建设网站前景怎么样,电子商务是什么意思组合模式是把一个类别归为一个整体#xff0c;并且组织多个整体之间的关系#xff0c;使用通过树形结构来描述所有整体。
一般的编写方式为一个类别对象下添加多个该对象的元素#xff0c;该对象又为其它对象下的元素。简单来说就是一个学校有一个总部#xff0c;总部下有…组合模式是把一个类别归为一个整体并且组织多个整体之间的关系使用通过树形结构来描述所有整体。
一般的编写方式为一个类别对象下添加多个该对象的元素该对象又为其它对象下的元素。简单来说就是一个学校有一个总部总部下有有师资部、招生部总部有分校分校也有。
在我个人看来设计模式的使用并不局限于书本描述的具体问题的解决是需要丰富的业务经验才能更好的灵活应用本人能力有限在此也是给出一个简单的示例用来说明额外的灵活运营需要看个人的编写方式。
首先新建一个学校的基类
#根
class root:name def __init__(self, name):self.name namedef 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 namedef 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 nameroot School(总部)
root.add(StudentAdmissionDept(总部招生办))
root.add(FacultyDepartment(总部师资部))s1 School(桂林校区)
s1.add(StudentAdmissionDept(桂林校区 招生办))
s1.add(FacultyDepartment(桂林校区 师资部))
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)