欢迎光临散文网 会员登陆 & 注册

设计模式:组合模式

2021-04-24 21:59 作者:做架构师不做框架师  | 我要投稿

什么是组合模式?

组合模式(英文:Composite Pattern),将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。

一句话归纳

部分-整体的层次结构

代码示例

组合模式一般描述整体和部分的关系,他把所有对象以树形结构的形式展现,顶级节点被称为根节点,根节点下面可以是树枝节点,也可以是叶子节点,树枝节点下面又可以是树枝节点和叶子节点,叶子节点下面则没有任何节点。

注意:在叶子类中的几个方法为什么要加个Deprecated注解呢?就是在编译器期告诉调用者,调用这个方法,但是会出现错误,已经告诉“该方法已经失效”了,还使用那在运行器也会抛出UnsupportedOperationException异常。

适用性

以下我建议你考虑使用:

  • 只要是整体和部分的关系都可以,比如公司组织架构、菜单、文件夹等等;

  • 叶子节点可以自由地增加。

局限性

以下我建议你谨慎使用:

  • 设计复杂,客户端需要更多的时间清理层次关系。

透明的组合模式和安全的组合模式

  • 透明模式,是把用来组合使用的方法放到抽象类中,不管叶子节点还是树枝节点都有相同的结构,如果处理不当,这个会在运行期出现问题,不是很建议的方式;

  • 安全模式,是把树枝节点和树叶节点彻底分开,树枝节点单独拥有用来组合的方式,这种方式比较安全。

写在最后

最后,好兄弟,记得点赞,关注,谢谢。


设计模式:组合模式的评论 (共 条)

分享到微博请遵守国家法律