admin管理员组

文章数量:1026989

组合模式Composite——树形结构不再头疼

组合模式可以在需要针对“树形结构”进行操作的应用中使用,例如扫描文件夹、渲染网站导航结构等等。

一、什么是组合模式?

组合模式将一组相似的对象看做一个对象处理,并根据一个树状结构来组合对象,提供一个统一的方法去访问相应的对象,使得用户对单个对象和组合对象的使用具有一致性。

很抽象对吧,那就到了举例子的时候:

  • 公司组织关系树

公司组织关系可能分为部门与人,其中人属于部门,有的人有下属,有的人没有下属。如果我们统一将部门、人抽象为组织节点,就可以方便的统计某个部门下有多少人、财务数据等等,而不用关心当前节点是部门还是人。

  • 操作系统的文件夹与文件

操作系统的文件夹与文件也是典型的树状结构,为了方便递归出文件夹内文件数量或者文件总大小,我们最好设计的时候就将文件夹与文件抽象为文件,这样每个节点都拥有相同的方法添加、删除、查找子元素,而不需要关心当前节点是文件夹或是文件。

这下就明白了吧,就是常见的树形结构。

组合模式有两种实现:安全模式和透明模式

  • Component抽象构件角色
    定义参加组合对象的共有方法和属性,可以定义一些默认的行为或

组合模式Composite——树形结构不再头疼

组合模式可以在需要针对“树形结构”进行操作的应用中使用,例如扫描文件夹、渲染网站导航结构等等。

一、什么是组合模式?

组合模式将一组相似的对象看做一个对象处理,并根据一个树状结构来组合对象,提供一个统一的方法去访问相应的对象,使得用户对单个对象和组合对象的使用具有一致性。

很抽象对吧,那就到了举例子的时候:

  • 公司组织关系树

公司组织关系可能分为部门与人,其中人属于部门,有的人有下属,有的人没有下属。如果我们统一将部门、人抽象为组织节点,就可以方便的统计某个部门下有多少人、财务数据等等,而不用关心当前节点是部门还是人。

  • 操作系统的文件夹与文件

操作系统的文件夹与文件也是典型的树状结构,为了方便递归出文件夹内文件数量或者文件总大小,我们最好设计的时候就将文件夹与文件抽象为文件,这样每个节点都拥有相同的方法添加、删除、查找子元素,而不需要关心当前节点是文件夹或是文件。

这下就明白了吧,就是常见的树形结构。

组合模式有两种实现:安全模式和透明模式

  • Component抽象构件角色
    定义参加组合对象的共有方法和属性,可以定义一些默认的行为或

本文标签: 组合模式Composite树形结构不再头疼