组合模式:允许客户将对象组合成树形结构来表现"整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
模式结构:
组合模式让我们能用树形方式创建对象的结构,树里面包含了组合以及个别的对象。使用组合结构,我们能把相同的操作应用在组合和个别对象上。换句话说,在大多数情况下,我们可以忽略对象组合和个别对象之间的差别。
包含其他组件的组件为组合对象;不包含其他组件的组件为叶节点对象。
组合模式为了保持”透明性“,常常会违反单一责任原则。也就是说,它一方面要管理内部对象,另一方面要提供一套访问接口。
当组合模式接口里提供删除子节点的方法时,在组件里有一个指向父节点的指针的话,实现删除操作会比较容易。
如果组合结构很复杂,或者便利的代价太高,那么就要考虑实现组合节点的缓存。
实例:在GUI里,我们常会发现一个顶层的组件(例如Frame、Panel)会包含其他组件(例如menu、checkbox、scrollbar),但是操作往往是同一套接口。在Android的View体系结构里就是这样,View其实就是Component,checkbox是Leaf,ViewGroup是Composite。
作者:imyfriend 发表于2013-6-2 21:17:48 原文链接
阅读:1 评论:0 查看评论