标签:检查 就会 缺点 关系 ora ash image 客户端 yellow
定义: 将对象组合成数形结构以表示 "部分-整体"的层次结构
组合模式使客户端对单个对象和组合对象保持一致的方式处理
?
组合模式 -使用场景:
希望客户端可以忽略组合对象与单个对象的差异时(不管是黑猫白猫,都是猫就是了)
处理一个树形结构时
优点:
其实定义接口,也是为了符合开闭原则
?
组合模式的缺点:
1.限制类型时会比较复杂(全部是抽象层,要在运行时检查)
2.使设计变得更加抽象
3. 判断代码复杂(可以使用 Visitor模式简化操作)
组合-相关设计模式
组合模式和访问者模式(使用访问者模式来 访问组合模式中的递归结构)
一个类中可能会定义 一个 level,用来表示根到节点的层数,通过这个层数可以很好的表示树的递归关系
?
awt.Container 就是用的组合模式,把成员看成一个个 Component ,这就是一颗树状结构
?
?
mybatis 的 sqlNode
?
?
?
也就是,自己 是 sqlNode ,自己的成员变量也有 sqlNode , 等同于可以无限拆分
?
即将 叶子对象 和 组合对象 实现了相同的接口,他们就会有相同的抽象
?
?
?
ArrayList, HashMap, HashSet 各种,都有使用这种组合模式
因为又相同的抽象层 ,所以 addAll 可以 将 Collection里面的并在一起
?
sqlNode > sqlNode 的子类
实现了相同的接口,叶子对象可以和 组合对象进行相同的处理
?
?
?
?
标签:检查 就会 缺点 关系 ora ash image 客户端 yellow
原文地址:https://www.cnblogs.com/lyr-2000/p/12568484.html