当前位置: 首页 > news >正文

蜘蛛从网站哪里抓取涿州市建设局网站

蜘蛛从网站哪里抓取,涿州市建设局网站,信息流广告文案,seo编辑招聘组合模式(Composite Pattern)是一种结构型设计模式,它通过将对象组合成树形结构来表示“部分-整体”层次。组合模式允许客户端统一处理单个对象和对象集合。换句话说,组合模式让客户端可以像处理单个对象一样处理对象的集合&#…

组合模式(Composite Pattern)是一种结构型设计模式,它通过将对象组合成树形结构来表示“部分-整体”层次。组合模式允许客户端统一处理单个对象和对象集合。换句话说,组合模式让客户端可以像处理单个对象一样处理对象的集合,使得树形结构的操作更加简单,提升了系统的灵活性。

在组合模式中,既可以将单个对象(叶子节点)与容器对象(树枝节点)进行统一处理,树枝节点本身也可以拥有其他树枝节点或叶子节点,从而形成一个递归的结构。组合模式通过递归的方式使得对整体对象的操作能够像对单个对象的操作一样。

一、组合模式的结构

组合模式通常由以下几个角色组成:

  1. 组件(Component)

    组件角色通常是一个抽象类或者接口,定义了组合对象和叶子节点都需要实现的通用接口。它可以声明一个操作,并提供默认实现(如果需要的话)。
  2. 叶子节点(Leaf)

    叶子节点是组合中的基本元素,它没有子对象。叶子节点类通常会实现组件接口,并定义自己的业务逻辑。
  3. 树枝节点(Composite)

    树枝节点(也叫容器节点)是组合中的复杂对象,它可以包含叶子节点或其他树枝节点。树枝节点同样会实现组件接口,并通常会在其内部维护子节点的集合(子树)。树枝节点负责对其子节点的管理,并能够通过组件接口向外部暴露操作。
  4. 客户端(Client)

    客户端通过组件接口操作组合中的对象,无论是单个叶子节点还是包含多个节点的树枝节点。客户端不需要关心这些对象是如何组织和管理的,可以通过统一的接口来执行操作。

二、组合模式的工作原理

组合模式的工作原理基于递归结构:组件(Component)接口统一了所有节点的行为,树枝节点(Composite)负责管理其子节点,并能够执行与其相关的操作,叶子节点(Leaf)则是最基本的元素,它没有子节点,也执行具体的操作。客户端通过组件接口与树枝节点或叶子节点进行交互,而不需要关心具体的结构。

在实际操作时,客户端可以像对待单个对象一样,使用统一的接口来调用操作。而树枝节点则负责将操作转发给其子节点,并根据子节点的不同进行处理。这样,组合模式隐藏了复杂的层次结构,提供了统一而简单的接口。

三、组合模式的示例

假设我们在设计一个文件管理系统,该系统包含文件(叶子节点)和文件夹(树枝节点)。文件夹中可以包含多个文件或文件夹。客户端需要能够像操作文件一样操作文件夹和文件。

  • 组件抽象类
    public abstract class MenuComponent {protected String name;protected int level;public void add(MenuComponent menuComponent){throw new UnsupportedOperationException();}public void remove(MenuComponent menuComponent){throw new UnsupportedOperationException();}public MenuComponent getChild(int index){throw new UnsupportedOperationException();}public String getName(){return name;}public abstract void print();
    }
    
  • 叶子节点类
    public class MenuItem extends MenuComponent{public MenuItem(String name, int level) {this.name = name;this.level = level;}@Overridepublic void print() {for (int i = 0; i < level;i++){System.out.print("--");}System.out.println(name);}
    }
  • 树枝节点类
    public class Menu extends MenuComponent{private List<MenuComponent> list = new ArrayList<>();public Menu(String name,int level){this.name = name;this.level = level;}@Overridepublic void add(MenuComponent menuComponent) {list.add(menuComponent);}@Overridepublic void remove(MenuComponent menuComponent) {list.remove(menuComponent);}@Overridepublic MenuComponent getChild(int index) {return list.get(index);}@Overridepublic void print() {for (int i = 0; i < level;i++){System.out.print("--");}System.out.println(name);list.forEach(menuComponent -> {menuComponent.print();});}
    }
    
  • 客户端代码
    public class Client {public static void main(String[] args) {MenuComponent menu1 = new Menu( "菜单管理", 2);menu1.add( new MenuItem("页面访问", 3));menu1.add( new MenuItem("展开菜单",  3));menu1.add( new MenuItem("编辑菜单",3));menu1.add( new MenuItem("删除菜单", 3));menu1.add( new MenuItem( "新增菜单",3));MenuComponent menu2 = new Menu( "权限管理", 2);menu2.add(new MenuItem( "页面访问",3)) ;menu2.add(new MenuItem( "提交保存", 3)) ;MenuComponent menu3 = new Menu(  "角色管理",2);menu3.add( new MenuItem("页面访问", 3));menu3.add( new MenuItem( "新增角色", 3));menu3.add( new MenuItem( "修改角色", 3));MenuComponent component = new Menu( "系统管理", 1);component.add(menu1);component.add(menu2);component.add(menu3);component.print();}
    }
  • 运行结果

四、组合模式的优缺点

优点:
  1. 统一的接口:

    客户端通过统一的接口来处理单个对象和对象集合(树形结构),无需关心不同类型的节点。树枝节点和叶子节点都实现了相同的接口,客户端可以以相同的方式进行操作。
  2. 树形结构:

    组合模式非常适用于树形结构的数据管理。树形结构可以灵活地表示部分和整体的关系,例如文件夹和文件、组织结构等。
  3. 简化客户端代码:

    由于客户端只需操作组件接口,它不需要关注具体的对象是叶子节点还是树枝节点,从而简化了客户端的代码。
  4. 递归的组织方式:

    组合模式适合处理递归结构(例如文件系统或图形界面),能够非常方便地处理嵌套的复杂对象。
缺点:
  1. 可能过于泛化:

    由于组合模式把叶子节点和树枝节点统一成一个组件接口,它可能会把一些不需要的操作暴露给客户端。例如,某些操作仅适用于树枝节点,但它们也可能被客户端用来操作叶子节点。
  2. 性能问题:

    如果树的深度较大或树的结构过于复杂,操作的效率可能会下降,尤其是递归调用时,可能会导致性能瓶颈。
  3. 不容易改变叶子节点的行为:

    在某些场景下,叶子节点的行为可能无法满足需求,尤其是在不考虑继承和多态的情况下。扩展叶子节点的行为可能会相对复杂。

五、组合模式的应用场景

  1. 树形结构的数据表示:

    组合模式非常适合表示树形结构的对象,如文件系统中的文件夹和文件、组织架构、公司中的部门和员工等。
  2. 图形和界面组件:

    在图形界面系统中,界面组件常常是嵌套的。一个复杂的UI组件可以包含多个子组件(如按钮、文本框、图片等),这些子组件又可能包含其他的子组件。组合模式能够将这些组件管理成一个树形结构,简化界面组件的管理和渲染。
  3. 多层嵌套的对象集合:

    组合模式适用于需要将多个对象嵌套在一起并统一管理的场景,尤其是在需要进行递归操作的场合,如组织结构图、公司账目管理等。
  4. 需要部分和整体一致性操作的场景:

    如果客户端需要对部分和整体都进行相同的操作,组合模式是一个理想选择。无论是单独的叶子节点,还是包含多个子节点的树枝节点,都可以通过统一的接口来进行操作。

http://www.yayakq.cn/news/988137/

相关文章:

  • 邢台网站建设公司房山网站建设怎么样
  • 东莞万江做网站app购物商城
  • 兖州城乡建设局网站外部网站可以做链接到淘宝吗
  • 旅游网站毕业设计源码微网站医院策划案
  • 保山市住房和城乡建设厅网站10个免费自学网
  • 北京做家政网站有哪些平台杭州产品设计公司
  • 北京珠宝网站建设效果图制作设计
  • 做网站与做游戏那个好企业邮箱注册哪家好
  • 网站开发中为什么有两个控制层百度推广账号怎么注册
  • 链接提取视频的网站脚气怎样治疗能根除
  • 怎么自己制作网站链接网站添加友情链接
  • 湖南大型网站建设页面设计的网站
  • 备案网站查询做网站那个搜索引擎好
  • 重庆如何做聚政网站页面异常导致本地路径泄漏 wordpress
  • 网站做投票系统网站建设哪专业
  • 张家港建设网站网站图片加载 优化
  • PHP网站开发程序员招聘百度权重什么意思
  • 昆明网站建设企业网站设计中 查询怎么做
  • 西安网站建设工程珠海建设工程备案网站
  • 网站建设力度公众号怎么制作投票活动
  • 如何建单页网站栏目网站有二级域名做竞价
  • 发卡网站搭建友情链接分析
  • 名师工作室网站建设 意义响应式网页网站设计
  • 网站备案的是空间还是域名响应式网站建站平台
  • 网站开发的功能需求怎么写如何查到网站是谁做的
  • 龙港 网站建设网站建设协议附件
  • 宝安高端网站建设哪家公司好域名查询网ip
  • 搭建手机网站360关键词排名百度
  • 网站开发实战项目找做柜子的网站
  • 网站取消备案兴文县建设工程网站