Design Pattern(7)-Composite Pattern
来源:互联网 发布:电脑上打轴的软件 编辑:程序博客网 时间:2024/04/29 02:20
适用场景
组合模式适用于树形结构。试想一个公司的所有员工,肯定有上下级关系,除了最底层的员工,其他员工都有自己的领导和自己管理的员工。Composite Pattern通过让每个非最底层员工持有自己的直接下属,从而实现这种树形结构。
因为公司的每个员工都具有一些共性,所以为他们设计一个公共父类或者接口,譬如Component或者叫Employee。但是最低层员工和非最底层员工有一些区别,因为最底层员工不允许添加下属,所以再设两个子类。
类图
实例代码
Component
public interface Component { void add(Component component); void remove(Component component); void action(); Component getChild(int index);}
Composite:
import java.util.ArrayList;import java.util.List;public class Composite implements Component{ private String num; List<Component> children; public Composite(String num) { this.num=num; this.children=new ArrayList<>(); } @Override public void add(Component component) { if(!children.contains(component)) children.add(component); } @Override public void remove(Component component) { if(children.contains(component)) children.remove(component); } @Override public void action() { for(Component component:children) component.action(); System.out.print(this.num+"\t"); } @Override public Component getChild(int index) { return children.get(index); }}
LeafEmployee:
public class LeafEmployee implements Component{ private String name; public LeafEmployee(String name) { this.name=name; } @Override public void add(Component component) { return; } @Override public void remove(Component component) { return; } @Override public void action() { System.out.print(this.name+"\t"); } @Override public Component getChild(int index) { return null; }}
Client:
public class Client { public static void main(String[] args){ Component manager=new Composite("总经理"); Component vice_manager=new Composite("副经理"); Component leaf1=new LeafEmployee("小张"); Component leaf2=new LeafEmployee("小王"); manager.add(vice_manager); vice_manager.add(leaf1); vice_manager.add(leaf2); manager.action(); }}
0 0
- Design Pattern(7)-Composite Pattern
- Design Pattern 3-Composite
- design pattern : Composite
- Design Pattern--Composite
- Design Pattern: Composite 模式
- strategy design pattern and composite design pattern
- Design Pattern - Structural Patterns - Composite Pattern
- Composite Design Pattern learning note
- Design Pattern - Composite(C#)
- head first---------composite design pattern
- design pattern——composite
- 【c++ Design Pattern Structural】Composite(组合)
- design pattern notes [1] - Bridge and composite
- Composite Design Pattern 组合设计模式
- Design Pattern 7: Flyweight Pattern
- Iterator Pattern & Composite Pattern
- Design Pattern 7-proxy
- Design pattern----Facade Pattern
- Spring的注解
- (转)Android中BindService方式使用的理解
- 数组初始化及其遍历
- ModBus协议-功能码-0x17
- Spring定时任务配置
- Design Pattern(7)-Composite Pattern
- Map的方法
- Linux 文件基本属性
- 服务器篇02-配置LVM逻辑卷
- 遍历map
- python变量赋值小技巧
- 简析操作系统线程,进程和协程
- Form表单两种数据传输的方式——get和post的区别
- Linux中的软件包管理:源代码形式,RPM软件包,YUM软件包