设计模式---组合模式
来源:互联网 发布:xml json yml 编辑:程序博客网 时间:2024/05/16 16:06
组合模式(Composite),将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
在Component中申明所有用来管理子对象的方法,Add,Remove等。这样实现Component接口的所有子类都具备了Add和Remove。这样做的好处就是叶子节点和枝干节点对于外界没有区别,它们具备完全一致的行为接口。
需求中体现部分与整体层次结构时,而且希望忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑使用组合模式。
Python示例:
from abc import ABCMeta, abstractmethodclass AbsDepartment(): __metaclass__ = ABCMeta @abstractmethod def Work(self): pass @abstractmethod def Add(self): pass @abstractmethod def Del(self): passclass IndependentDepartment(AbsDepartment): def __init__(self,Name,WorkDetail): self._Name=Name self._WorkDetail=WorkDetail def Work(self): print self._Name + 'wrok:' + self._WorkDetail def Add(self): print 'IndependentDepartment Can not Add Sub' def Del(self): print 'IndependentDepartment Can no Del Sub'class DepartMent(AbsDepartment): def __init__(self,Name,WorkDetail): self._Name = Name self._WorkDetail = WorkDetail self._SubDepartMent=[] def Add(self,ObjDepartMent): self._SubDepartMent.append(ObjDepartMent) def Del(self,ObjDepartMent): self._SubDepartMent.remove(ObjDepartMent) def Work(self): print self._Name+'work:'+self._WorkDetail for DepartMent in self._SubDepartMent: DepartMent.Work()ZTE = DepartMent('中兴通讯','生产通讯设备') SmartPhoneDept =IndependentDepartment('--手机事业部','生产手机')WireLess = DepartMent('--无线院','研发无线产品')ZTE.Add(SmartPhoneDept)ZTE.Add(WireLess)UMTSTestingDept=IndependentDepartment('----UMTS基站测试部','基站测试')UMTSSoftDept=IndependentDepartment('----UMTS基站软件部','基站软件开发')WireLess.Add(UMTSTestingDept)WireLess.Add(UMTSSoftDept)
程序执行效果:
阅读全文
0 0
- 设计模式:组合模式
- 设计模式-----组合模式
- 设计模式 组合模式
- 设计模式--组合模式
- 设计模式---组合模式
- 【设计模式】组合模式
- 设计模式 - 组合模式
- 设计模式----组合模式
- 设计模式 - 组合模式
- 设计模式:组合模式
- 设计模式 - 组合模式
- 设计模式-组合模式
- 设计模式 - 组合模式
- 【设计模式】组合模式
- 设计模式--组合模式
- 设计模式-组合模式
- 设计模式:组合模式
- 设计模式-----组合模式
- Django xadmin log页面报错
- Golang实现七大排序(1)
- 构建maven时No archetypes currently available的解决方法
- scratch3.0中文版下载
- 模式识别、机器学习的区别和联系
- 设计模式---组合模式
- makefile的基本格式
- Scala之协变
- JAVASE之静态和代码块
- wustoj (创建一棵哈夫曼树)
- 爬虫爬取电商网站的商品数据并保存成json文件
- 清橙A1004. 画长方形2
- nodejs接收get请求参数
- 知识资料全集荟萃