电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python3 簡(jiǎn)單實(shí)現(xiàn)組合設(shè)計(jì)模式

瀏覽:3日期:2022-07-18 18:19:00

組合模式是把一個(gè)類別歸為一個(gè)整體,并且組織多個(gè)整體之間的關(guān)系,使用通過(guò)樹(shù)形結(jié)構(gòu)來(lái)描述所有整體。

一般的編寫(xiě)方式為一個(gè)類別對(duì)象下添加多個(gè)該對(duì)象的元素,該對(duì)象又為其它對(duì)象下的元素。簡(jiǎn)單來(lái)說(shuō)就是一個(gè)學(xué)校有一個(gè)總部,總部下有有師資部、招生部;總部有分校,分校也有。

在我個(gè)人看來(lái),設(shè)計(jì)模式的使用并不局限于書(shū)本描述的具體問(wèn)題的解決,是需要豐富的業(yè)務(wù)經(jīng)驗(yàn)才能更好的靈活應(yīng)用,本人能力有限,在此也是給出一個(gè)簡(jiǎn)單的示例用來(lái)說(shuō)明,額外的靈活運(yùn)營(yíng)需要看個(gè)人的編寫(xiě)方式。

首先新建一個(gè)學(xué)校的基類:

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

以上學(xué)校基類初始化方法為接收一個(gè)name,并且有一個(gè)抽象方法add。

有了一個(gè)學(xué)校基類后,具體新建一個(gè)學(xué)校類,繼承root基類:

#學(xué)校類class School(root): childrenroot = [] def add(self, root): self.childrenroot.append(root)

在以上學(xué)校類中,繼承了root基類,并且實(shí)現(xiàn)了add方法,接收root值,并且把它添加到 childrenroot 列表中,這樣可以網(wǎng)當(dāng)前對(duì)象下添加子節(jié)點(diǎn),或者說(shuō)添加下級(jí)對(duì)象。

新建一個(gè)招生辦類以及一個(gè)師資部類:

#招生辦class StudentAdmissionDept(root): def __init__(self, name): self.name = name#師資部class FacultyDepartment(root): def __init__(self, name): self.name = name

以上內(nèi)容很簡(jiǎn)單,都是繼承于root,就一個(gè)初始化方法。

開(kāi)始實(shí)現(xiàn)調(diào)用。首先新建一個(gè)學(xué)校總部對(duì)象,并且往這個(gè)總部對(duì)象下添加一個(gè)招生辦對(duì)象以及一個(gè)師資部對(duì)象:

root = School(’總部’)root.add(StudentAdmissionDept(’總部招生辦’))root.add(FacultyDepartment(’總部師資部’))

新建好總部對(duì)象后,往下添加分校區(qū)的對(duì)象。分校區(qū)的部門設(shè)置跟總校一致:

s1 = School(’桂林校區(qū)’)s1.add(StudentAdmissionDept(’桂林校區(qū) 招生辦’))s1.add(FacultyDepartment(’桂林校區(qū) 師資部’))root.add(s1)

在配置完第一個(gè)桂林校區(qū)后,使用root總部的add方法,添加當(dāng)前桂林校區(qū)為下級(jí)。

再新建幾個(gè)校區(qū):

s2 = School(’深圳校區(qū)’)s2.add(StudentAdmissionDept(’深圳校區(qū) 招生辦’))s2.add(FacultyDepartment(’深圳校區(qū) 師資部’))root.add(s2)s3 = School(’廣州校區(qū)’)s3.add(StudentAdmissionDept(’廣州校區(qū) 招生辦’))s3.add(FacultyDepartment(’廣州校區(qū) 師資部’))root.add(s3)

以上配置方法跟第一個(gè)校區(qū)配置為root總部校區(qū)下級(jí)一致。

最后使用遍歷打印出各個(gè)校區(qū)的名字:

print(’n’,root.name,’下級(jí)學(xué)校層級(jí):n’)for i in root.childrenroot: print(i.name)

結(jié)果為:

python3 簡(jiǎn)單實(shí)現(xiàn)組合設(shè)計(jì)模式

由于沒(méi)有排版,以上結(jié)果并沒(méi)有很好的直觀顯示層級(jí),剩下的只需要自己排版輸出即可。

在當(dāng)前文章對(duì)應(yīng)的代碼編寫(xiě)中,最后的新建校區(qū)及配置信息,可以新建一個(gè)類,封裝好該調(diào)用、輸出方法,可以很方便的使用組合設(shè)計(jì)模式。

完整代碼如下:

#根class root: name = ’’ def __init__(self, name): self.name = name def add(self, root): pass #學(xué)校類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(’桂林校區(qū)’)s1.add(StudentAdmissionDept(’桂林校區(qū) 招生辦’))s1.add(FacultyDepartment(’桂林校區(qū) 師資部’))root.add(s1)s2 = School(’深圳校區(qū)’)s2.add(StudentAdmissionDept(’深圳校區(qū) 招生辦’))s2.add(FacultyDepartment(’深圳校區(qū) 師資部’))root.add(s2)s3 = School(’廣州校區(qū)’)s3.add(StudentAdmissionDept(’廣州校區(qū) 招生辦’))s3.add(FacultyDepartment(’廣州校區(qū) 師資部’))root.add(s3) print(’n’,root.name,’下級(jí)學(xué)校層級(jí):n’)for i in root.childrenroot: print(i.name)

以上就是python3 簡(jiǎn)單實(shí)現(xiàn)組合設(shè)計(jì)模式的詳細(xì)內(nèi)容,更多關(guān)于Python 實(shí)現(xiàn)組合設(shè)計(jì)模式的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 清水混凝土修复_混凝土色差修复剂_混凝土色差调整剂_清水混凝土色差修复_河南天工 | 岛津二手液相色谱仪,岛津10A液相,安捷伦二手液相,安捷伦1100液相-杭州森尼欧科学仪器有限公司 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 明渠式紫外线杀菌器-紫外线消毒器厂家-定州市优威环保 | 智能气瓶柜(大型气瓶储存柜)百科 | 超声骨密度仪-骨密度检测仪-经颅多普勒-tcd仪_南京科进实业有限公司 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 雪花制冰机(实验室雪花制冰机)百科 | 自动螺旋上料机厂家价格-斗式提升机定制-螺杆绞龙输送机-杰凯上料机 | 颚式破碎机,圆锥破碎机,制砂机-新乡市德诚机电制造有限公司 | 美名宝起名网-在线宝宝、公司、起名平台| 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 登车桥动力单元-非标液压泵站-非标液压系统-深圳市三好科技有限公司 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 烟气在线监测系统_烟气在线监测仪_扬尘检测仪_空气质量监测站「山东风途物联网」 | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 电动葫芦|防爆钢丝绳电动葫芦|手拉葫芦-保定大力起重葫芦有限公司 | 120kv/2mA直流高压发生器-60kv/2mA-30kva/50kv工频耐压试验装置-旭明电工 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 365文案网_全网创意文案句子素材站 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 蒸汽吸附分析仪-进口水分活度仪|康宝百科 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 综合管廊模具_生态,阶梯护坡模具_检查井模具制造-致宏模具厂家 | 北京开源多邦科技发展有限公司官网 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 石英粉,滑石粉厂家,山东滑石粉-莱州市向阳滑石粉有限公司 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | led冷热冲击试验箱_LED高低温冲击试验箱_老化试验箱-爱佩百科 | 楼承板-开口楼承板-闭口楼承板-无锡海逵 | 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 超声波流量计_流量标准装置生产厂家 _河南盛天精密测控 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | 警用|治安|保安|不锈钢岗亭-售货亭价格-垃圾分类亭-移动厕所厂家-苏州灿宇建材 |