Java设计模式(五) 多态的极致应用——组合模式

本文详细介绍了Java中的组合模式,这是一种用于表示部分-整体层次结构的设计模式。通过类图和实例解析,展示了如何使用组合模式进行统一的接口操作,简化高层模块的调用。同时,文章讨论了模式的优点,如易于扩展和符合多种面向对象设计原则,以及缺点,如无法限制子组件类型。此外,文章还提到了该模式在Java设计模式系列中的位置。
摘要由CSDN通过智能技术生成

  原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处http://www.jasongj.com/design_pattern/composite/

组合模式介绍

组合模式定义

组合模式(Composite Pattern)将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户可以使用一致的方法操作单个对象和组合对象。

组合模式类图

组合模式类图如下
Composite pattern class diagram

组合模式角色划分

  • 抽象组件,如上图中的Component
  • 简单组件,如上图中的SimpleComponent
  • 复合组件,如上图中的CompositeComponent

组合模式实例

实例介绍

对于一家大型公司,每当公司高层有重要事项需要通知到总部每个部门以及分公司的各个部门时,并不希望逐一通知,而只希望通过总部各部门及分公司,再由分公司通知其所有部门。这样,对于总公司而言,不需要关心通知的是总部的部门还是分公司。

实例类图

组合模式实例类图如下(点击可查看大图)
Composite pattern example class diagram

实例解析

本例代码可从作者Github下载

抽象组件

抽象组件定义了组件的通知接口,并实现了增删子组件及获取所有子组件的方法。同时重写了hashCodeequales方法(至于原因,请读者自行思考。如有疑问,请在评论区留言)。

package com.jasongj.organization;

import java.util.ArrayList;
import java.util.Li
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值