Aha!设计模式(56)-组合模式(3)

2019-04-13 13:54发布

效果
组合模式的内容包括两点:一是提供一种访问和管理下级节点的标准的方式,二是可以将针对父节点的操作递归扩散到它的下级节点或下下级节点。其所有的效果都源于这个特征。   1.使用组合模式,可以很简单的构 造树形数据结构。 2.使用组合模式,可以使利用者以相同的观点使用树形结构上的任意节点,无论这个节点使叶子节点,还是父节点,甚至是爷爷节点都一样。 3.组合模式中的子节点是基类类型,允许动态改变一个对象的子节点构成以实现新的功能。 4.使用组合模式的数据结构实现系列化之后,在不改变系列化代码的情况下就可以存储新的数据类型。       实现   真正使用组合模式的时候,有几点需要注意: 1.关于Component的接口 由于Component接口是树形数据结构上所有节点共有的特征,因此需要非常小心地维护这个接口。特别需要注意的是,不要为了局部的需求而改变到节点的全体。 2.Component还是Composite 数据结构实际上是设计者对处理对象的静态视图,这个看法会随着需求的变化,设计的深入而发生变化。对于组合模式来讲,一个重要的分歧点就是一个节点到底是Component还是Composite。如果是软件没有发布的话,这样的变化影响不会太大;如果产品已经上市,客户已经使用这个产品生成自己的数据文件,这种变更就会比较麻烦。考虑到未来可能发生的变更,一开始就让将Composite的功能合并到Component中没准是一个比较号的妥协点。       觉得本文有帮助?请分享给更多人。 阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】