设计模式:类与类之间关系的表示方式(聚合,组合,依赖,继承,实现)

server/2024/10/22 17:38:32/

目录

聚合关系

组合关系

依赖关系

继承关系

实现关系


聚合关系

聚合是一种较弱的“拥有”关系,表示整体与部分的关系,但部分可以独立于整体存在。例如,部门和员工之间的关系,一个部门可以包含多个员工,但员工可以离开这个部门。

// 员工类
class Employee {private String name;public Employee(String name) {this.name = name;}// 省略其他属性和方法
}// 部门类
class Department {private String name;private List<Employee> employees; // 部门包含多个员工,聚合关系public Department(String name) {this.name = name;this.employees = new ArrayList<>();}public void addEmployee(Employee employee) {employees.add(employee);}// 省略其他属性和方法
}

UML示例:

组合关系

组合是一种较强的“拥有”关系,表示整体与部分的关系,但部分不能独立于整体存在。通常,组合关系中的部分会在整体创建时创建,并在整体销毁时销毁。例如,公司和部门之间的关系,一个公司由多个部门组成,如果公司不存在了,部门也将不存在。

// 部门类
class Department {private String name;public Department(String name) {this.name = name;}// 省略其他属性和方法
}// 公司类
class Company {private String name;private List<Department> departments; // 公司包含多个部门,组合关系public Company(String name) {this.name = name;this.departments = new ArrayList<>();}// 创建部门时,直接在Company类内部进行public Department createDepartment(String deptName) {Department department = new Department(deptName);departments.add(department);return department;}// 省略其他属性和方法
}

UML示例:

依赖关系

在Java中,依赖关系是类与类之间最弱的一种关系。当一个类的方法使用或操纵另一个类的对象时,我们就说第一个类依赖于第二个类。这种关系通常通过以下几种方式表现:

  1. 一个类的方法接收另一个类的对象作为参数。
  2. 一个类的方法返回另一个类的对象。
  3. 一个类的方法使用另一个类的对象进行某些操作。

下面是一个简单的Java代码示例,说明两个类之间的依赖关系:

// Car类表示汽车,依赖于Engine类
class Car {// Car类的方法start需要Engine对象来启动汽车public void start(Engine engine) {if (engine != null) {engine.start();System.out.println("Car started with the engine.");}}
}// Engine类表示发动机
class Engine {// Engine类的方法start用于启动发动机public void start() {System.out.println("Engine started.");}
}// Main类用于演示依赖关系
public class Main {public static void main(String[] args) {// 创建Engine对象Engine engine = new Engine();// 创建Car对象Car car = new Car();// Car对象依赖于Engine对象来启动car.start(engine);}
}

UML示例:

继承关系

继承是子类继承父类的方法和属性的过程。在Java中,使用extends关键字来实现继承关系。

// 父类
class Animal {void eat() {System.out.println("Animal is eating...");}
}// 子类继承Animal类
class Dog extends Animal {void bark() {System.out.println("Dog is barking...");}
}// 测试类
public class TestInheritance {public static void main(String[] args) {Dog dog = new Dog();dog.eat(); // 继承自Animal类的方法dog.bark(); // Dog类自己的方法}
}

UML示例:

实现关系

实现是指一个类实现一个或多个接口的过程。接口定义了一组抽象方法,实现类必须提供这些方法的实现。在Java中,使用implements关键字来实现接口。

// 定义一个接口
interface Animal {void eat();
}// 实现该接口的类
class Dog implements Animal {public void eat() {System.out.println("Dog is eating...");}void bark() {System.out.println("Dog is barking...");}
}// 测试类
public class TestImplementation {public static void main(String[] args) {Dog dog = new Dog();dog.eat(); // 实现自Animal接口的方法dog.bark(); // Dog类自己的方法}
}

UML示例:


http://www.ppmy.cn/server/133962.html

相关文章

013_django基于大数据的高血压人群分析系统2024_dcb7986h_055

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

振弦式传感器在高边坡监测中发挥哪些优势?

振弦式传感器在高边坡监测中发挥哪些优势?在工程建设与地质灾害防治领域&#xff0c;高边坡监测至关重要。高边坡的稳定性直接关系到工程的安全以及周边环境和人员的生命财产安全。为了实现对高边坡的有效监测&#xff0c;各种先进的传感器技术被广泛应用&#xff0c;其中振弦…

力扣 简单 876.快慢指针

文章目录 题目介绍题解 题目介绍 题解 class Solution {public ListNode middleNode(ListNode head) {ListNode slow head, fast head;while(fast ! null && fast.next ! null){slow slow.next;fast fast.next.next;}return slow;} }

RabbitMQ如何保证消息不丢失?

在 RabbitMQ 中&#xff0c;为了保证消息不丢失&#xff0c;通常采取以下几个关键机制&#xff1a; 1. 消息持久化&#xff08;Message Durability&#xff09; 持久化队列&#xff1a;在声明队列时&#xff0c;将其设置为 durable&#xff0c;这样即使 RabbitMQ 服务器宕机重…

Sentinel 介绍

随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开…

Guava防击穿回源-异步防击穿

异步防击穿策略 在高并发环境下,缓存击穿(Cache Stampede)是一种常见的问题。当缓存中的热点数据失效或未命中时,大量并发请求同时访问后端数据源(如数据库),可能导致后端系统压力骤增,甚至出现崩溃。为了有效防止这种情况,可以利用Guava提供的异步缓存加载机制(类似…

用Windows server 2022加入到Windows server 2019的DC中来

Windows server 2022加入到域控Windows server 2019中 图1-1 修改Windows server 2022的网卡信息&#xff08;静态IP和Windows server 2019保持一个网段&#xff09; 图1-2 经测试是可以和域控通信 给Windows server 2022重新命名一下&#xff1a;win2022S1,然后重启系统 图…

AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面&#xff0c;成为Science、Nature论文的…