深度学习设计模式之组合模式

2024-05-29 1216阅读

文章目录

  • 前言
  • 一、介绍
  • 二、详细分析
    • 1.核心组成
    • 2.实现步骤
    • 3.代码示例
    • 4.优缺点
      • 优点
      • 缺点
      • 5.使用场景
      • 总结

        前言

        组合模式是将对象组合成树形结构来表现"整体/部分"层次结构,可以更好的实现管理操作。


        一、介绍

        组合设计模式又叫部分整体模式,将对象组合成树形结构来表现"整体/部分"层次结构,可以更好的实现管理操作。使用户可以通过一致的方法操作单个对象或组合对象,整体和部分的基本操作多数都是一样的,也会有不同的地方。组合模式可以用一棵树来表示。

        二、详细分析

        1.核心组成

        • 组合部件(Component):它是一个抽象接口,表示树根;
        • 合成部件(Composite):和组合部件类似,也有自己的子节点;
        • 叶子(Leaf):在组合中表示子节点对象,注意他是没有子节点。

          公司底下有部门,部门底下有职位。以下所示:

          深度学习设计模式之组合模式

          2.实现步骤

          1. 创建组合部件,他是个抽象类,定义部件中的属性和方法;
          2. 创建合成部件,继承组合部件,创建集合属性,用来管理叶子节点;
          3. 创建叶子节点,继承组合部件,不能添加子节点。

          3.代码示例

          组合部件

          /**
           * 组合部件
           */
          public abstract class Company {
              private String job;
              public Company(String job) {
                  this.job = job;
              }
              public String getJob() {
                  return job;
              }
              public void setJob(String job) {
                  this.job = job;
              }
              /**
               * 添加职位
               */
              protected abstract void addJob(Company company);
              /**
               * 删除职位
               */
              protected abstract void removeJob(Company company);
              /**
               * 展示职位
               * @param depth 显示层级
               */
              protected abstract void display(int depth);
          }
          

          合成部件

          /**
           * 合成部件
           */
          public class Department extends Company {
              List companyList = new ArrayList();
              public Department(String job) {
                  super(job);
              }
              @Override
              protected void addJob(Company company) {
                  companyList.add(company);
              }
              @Override
              protected void removeJob(Company company) {
                  companyList.remove(company);
              }
              @Override
              protected void display(int depth) {
                  StringBuffer str= new StringBuffer();
                  for (int i=0;i
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]