广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详细总结Java组合模式
  • 667
分享到

详细总结Java组合模式

2024-04-02 19:04:59 667人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、前言二、介绍三、实现一、前言 组合模式,又叫部分整体模式,是用于把一组相似的对象,当做单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式

一、前言

组合模式,又叫部分整体模式,是用于把一组相似的对象,当做单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它提供了修改相同对象组的方式。

二、介绍

意图:

将对象组合成树形结构以表示”部分-整体“的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

主要解决:

它在我么的属性结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样处理复杂元素,从而使得客户程序的复杂元素的内部结构解耦。

应用实例:

  • s算术表达式包括操作数,操作符和另一个操作数,其中,另一个操作符也可以是操作数,操作符和另一个操作数。
  • 在java AWT 和 SWING中对于Button 和 CheckBox是树叶, Container是树枝。Android View源码可以参考下。

何时使用:

  • 您想表示对象的部分-整体层次结构的时候(树形结构)
  • 您希望用户忽略组合对象与单个对象的不同,用户将统一的使用组合结构中的所有对象。

优点

1 高层模块调用简单。

2 节点自由增加

缺点
在使用组合模式的时候,其叶子和树枝的声明都是直线类,而不能是接口,违反了依赖倒置原则。(不明白依赖倒置原则,去请参考另外一篇文章,讲不透算我输!)

使用场景 部分,整体场景,如树形菜单,文件,文件夹的管理

注意事项: 定义时为具体类

三、实现

在这里插入图片描述


class Employee {
    private String name;
    private String dept;
    private int salary;
    private List<Employee> subordinates;

    public Employee(String name, String dept, int salary) {
        this.name = name;
        this.dept = dept;
        this.salary = salary;
        this.subordinates = new ArrayList<>();
    }

    public void add(Employee employee) {
        subordinates.add(employee);
    }

    public void remove(Employee employee) {
        subordinates.remove(employee);
    }

    public List<Employee> getSubordinates() {
        return subordinates;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", dept='" + dept + '\'' +
                ", salary=" + salary +
                ", subordinates=" + subordinates +
                '}';
    }
}

class CompositePatternDemo {
    public static void main(String[] args) {
        Employee CEO = new Employee("John", "CEO", 30000);
        Employee headSales = new Employee("Robert", "Head Sales", 20000);
        Employee headMarketing = new Employee("Michel", "Head Marketing", 20000);
        Employee clerk1 = new Employee("Laura", "Marketing", 10000);
        Employee clerk2 = new Employee("Bob", "Marketing", 10000);
        Employee salesExecutive1 = new Employee("Richard", "Sales", 10000);
        Employee salesExecutive2 = new Employee("Rob", "Sales", 10000);

        CEO.add(headSales);
        CEO.add(headMarketing);

        headSales.add(salesExecutive1);
        headSales.add(salesExecutive2);

        headMarketing.add(clerk1);
        headMarketing.add(clerk2);

        System.out.println(CEO);


    }
}

到此这篇关于详细总结Java组合模式的文章就介绍到这了,更多相关Java组合模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详细总结Java组合模式

本文链接: https://www.lsjlt.com/news/126033.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详细总结Java组合模式
    目录一、前言二、介绍三、实现一、前言 组合模式,又叫部分整体模式,是用于把一组相似的对象,当做单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式...
    99+
    2022-11-12
  • Java结构型模式中的组合模式详解
    目录一.介绍二.UML类图1.透明方式2.安全方式三.具体代码四.使用场景五.优点一.介绍 组合模式(Composite Pattern)属于结构型模式。组合模式又叫作部分整体模式,...
    99+
    2023-02-16
    Java结构型模式 Java组合模式
  • Java结构型设计模式之组合模式详解
    目录组合模式应用场景优缺点主要角色组合模式结构分类透明组合模式创建抽象根节点创建树枝节点创建叶子节点客户端调用安全组合模式创建抽象根节点创建树枝节点创建叶子节点客户端调用组合模式 组...
    99+
    2022-11-13
  • Java结构型设计模式之组合模式CompositePattern详解
    目录概述三大组件应用案例顶层组件OrganizationComponentComposite组件叶子节点客户端测试UML类图总结概述 组合模式(Composite Pattern),...
    99+
    2022-11-13
    Java Composite Pattern Java 组合模式
  • java集合遍历的几种方式总结及详细比较
    集合类的通用遍历方式, 用迭代器迭代:Iterator it = list.iterator();while(it.hasNext()) {  Object obj = it.next();}...
    99+
    2023-05-31
    java 集合 遍历
  • Java中,Map、List集合遍历、去重方式超详细总结
    Java中常用的遍历方式有: 普通for循环for-each循环使用迭代器(Iterator)Java8中的Stream   Map集合中常用的遍历方式: 4种 1.使用keySet()方法遍历Map的键: Map map = new...
    99+
    2023-10-07
    java 开发语言
  • java设计模式-组合模式详解
    目录组合模式Demo代码:总结组合模式 组合模式(Composite Pattern)又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来...
    99+
    2022-11-12
  • Java 中组合模型之对象结构模式的详解
    Java 中组合模型之对象结构模式的详解一、意图 将对象组合成树形结构以表示”部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 二、适用性你想表示对象的部分-整体层次结构你希望用户忽略组合对象与单个对...
    99+
    2023-05-31
    java 组合模型 ava
  • Java设计模式之java组合模式详解
    目录引言组合模式介绍角色模式结构示例代码水果盘文件浏览更复杂的组合模式透明与安全透明组合模式安全组合模式组合模式总结优点缺点适用场景应用XML文档解析文件HashMapMybatis...
    99+
    2022-11-12
  • java 操作elasticsearch详细总结
    一、前言 上一篇我们通过kibana的可视化界面,对es的索引以及文档的常用操作做了毕竟详细的总结,本篇将介绍如何使用java完成对es的操作,这也是实际开发中将要涉及到的。 二、java操作es的常用模式 目前,开发中使用java操作...
    99+
    2023-09-02
    java 操作es详细总结 java 操作es springboot整合es
  • Java基础之数组超详细知识总结
    目录一、一维数组二、二维数组三、总结一、一维数组 1、Java语言中的数组是一种 引用数据类型。不属于基本数据类型。数组的父类是 Object。 2、数组实际上是一个容器,可以同时容...
    99+
    2022-11-12
  • Java LocalDate的详细方法总结
    1、LocalDate now() 从默认时区的系统时钟获取当前日期。 LocalDate a = LocalDate.now(); System.out.println(a); // 2023-06-0...
    99+
    2023-09-20
    java
  • PHP结构型模式之组合模式
    目录组合模式(Composite Pattern)是什么组合模式的优点组合模式的实现组合模式的使用总结组合模式(Composite Pattern)是什么 组合模式是一种结构型模式,...
    99+
    2023-05-14
    PHP结构型模式 PHP组合模式
  • JAVA发送HTTP请求的多种方式详细总结
    目录1. HttpURLConnection2. HttpClient3. CloseableHttpClient4. okhttp5. Socket6. RestTemplate总...
    99+
    2023-01-30
    java发送http请求 java http请求
  • java正则表达式匹配规则超详细总结
    目录1 单个字符的匹配规则如下:2 多个字符的匹配规则如下:3 复杂匹配规则主要有:4 提取匹配的字符串子段5 非贪婪匹配6 替换和搜索6.1 分割字符串6.2 搜索字符串6.3 替...
    99+
    2022-11-13
  • Java结构型设计模式之桥接模式详细讲解
    目录桥接模式概述应用场景优缺点主要角色桥接模式的基本使用创建实现角色创建具体实现角色创建抽象角色创建修正抽象角色客户端调用桥接模式实现消息发送创建实现角色创建具体实现角色创建抽象角色...
    99+
    2022-11-13
  • Java设计模式:组合模式
    目录概述结构组合模式案例分析总结在本讲,我们来学习一下结构型模式里面的第六个设计模式,即组合模式。 概述 在学习组合模式之前,我们先来看下面这张图。 对于以上这张图大家应该很熟悉,...
    99+
    2022-11-12
  • Java设计模式之组合模式的示例详解
    目录定义原理类图案例需求方案分析总结定义 组合模式,又叫部分整体模式,它创建了对象组的数据结构(将对象组合成树状结构,用来表示部分整体的层级关系)组合模式使得用户对单个对象和组合对象...
    99+
    2022-11-13
  • 超详细的vue组件间通信总结
    目录前言一、props、$emit单向数据流二、$parent、$children三、$attrs、$listeners四、provide、inject五、eventBus(事件总线...
    99+
    2022-11-12
  • Java Swing最详细基础知识总结
    目录一、简介二、Swing 组件的层次结构三、Swing组件3.1 JFrame窗体组件3.2 JDialog窗体组件3.3 JLabel组件3.4 文本域3.5 按钮四.布局管理器...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作