计划模式中的类关系

打印 上一主题 下一主题

主题 899|帖子 899|积分 2697

1. 依赖(Dependency)

界说:一个类使用到另一个类的实例,通常是通过方法参数、局部变量等。依赖关系是最弱的关系,由于它仅仅体现类之间的暂时关联。
特征:在 UML 图中,依赖关系用带箭头的虚线体现,箭头指向被依赖的类。
示例
  1. public class Driver {
  2.    public void drive(Car car) {
  3.        car.start();
  4.    }
  5. }
  6. public class Car {
  7.    public void start() {
  8.        System.out.println("Car started");
  9.    }
  10. }
复制代码
在这个例子中,Driver 类依赖于 Car 类,由于 drive 方法使用了 Car 类的对象。
2. 关联(Association)

界说:关联是一种结构关系,描述了一个对象知道另一个对象的存在,而且可以和它举行交互。一个类中存在另一个类的对象作为成员变量,这种关系可以是双向的。关联通常是长期的,是类之间的一种静态关系。
特征:在 UML 图中,关联关系用带箭头或没有箭头的实线体现,箭头指向目标类。关联可以是双向的(双箭头)或单向的(单箭头)。
示例
  1. public class Person {
  2.    private Address address;
  3.    public Person(Address address) {
  4.        this.address = address;
  5.    }
  6.    public Address getAddress() {
  7.        return address;
  8.    }
  9. }
  10. public class Address {
  11.    private String street;
  12.    public Address(String street) {
  13.        this.street = street;
  14.    }
  15.    public String getStreet() {
  16.        return street;
  17.    }
  18. }
复制代码
在这个例子中,Person 类和 Address 类之间是关联关系,Person 类持有 Address 类的引用。
3. 聚合(Aggregation)

界说:聚合是一种特殊的关联关系,它体现整体和部门之间的关系。聚合是“拥有”关系,但部门可以独立于整体存在。
特征:在 UML 图中,聚合用带有空心菱形的实线体现,菱形指向整体的一方。
示例
  1. public class Department {
  2.    private List<Employee> employees;
  3.    public Department() {
  4.        this.employees = new ArrayList<>();
  5.    }
  6.    public void addEmployee(Employee employee) {
  7.        employees.add(employee);
  8.    }
  9. }
  10. public class Employee {
  11.    private String name;
  12.    public Employee(String name) {
  13.        this.name = name;
  14.    }
  15. }
复制代码
在这里,Department 和 Employee 是聚合关系。Department 作为整体,包罗了 Employee 作为部门。Employee 可以脱离 Department 单独存在。
4. 组合(Composition)

界说:组合是一种更强的聚合关系,它也描述整体和部门的关系,但部门不能独立于整体存在。当整体烧毁时,部门也会被烧毁。
特征:在 UML 图中,组合用带有实心菱形的实线体现,菱形指向整体的一方。
示例
  1. public class House {
  2.    private List<Room> rooms;
  3.    public House() {
  4.        rooms = new ArrayList<>();
  5.        rooms.add(new Room("Living Room"));
  6.        rooms.add(new Room("Bedroom"));
  7.    }
  8. }
  9. public class Room {
  10.    private String name;
  11.    public Room(String name) {
  12.        this.name = name;
  13.    }
  14. }
复制代码
在这个例子中,House 和 Room 是组合关系。Room 作为 House 的一部门,不能脱离 House 独立存在。
5. 实现(Implementation)

界说:实现是指一个类实现了一个接口,它必须提供接口中界说的所有方法的具体实现。
特征:在 UML 图中,实现关系用带空心箭头的虚线体现,箭头指向接口。
示例
  1. public interface Animal {
  2.    void makeSound();
  3. }
  4. public class Dog implements Animal {
  5.    public void makeSound() {
  6.        System.out.println("Bark");
  7.    }
  8. }
复制代码
在这个例子中,Dog 实现了 Animal 接口,这是实现关系。
6. 继续(Inheritance)

界说:继续是类与类之间的一种关系,体现一个类是另一个类的子类,它继续了父类的属性和方法。
特征:在 UML 图中,继续用带空心箭头的实线体现,箭头指向父类。
示例
  1. public class Animal {
  2.    public void eat() {
  3.        System.out.println("Animal is eating");
  4.    }
  5. }
  6. public class Cat extends Animal {
  7.    public void meow() {
  8.        System.out.println("Meow");
  9.    }
  10. }
复制代码
在这个例子中,Cat 类继续了 Animal 类,这是一种继续关系。
总结

以上代码示例展示了计划模式中的六大关系的基本形式和应用场景。这些关系帮助我们理解和计划类与类之间的毗连方式,以实现良好的代码结构和模块化。理解这些关系对于掌握面向对象计划和计划模式有着紧张意义。
保举阅读

计划模式中的类关系-CSDN博客
面向对象计划原则-CSDN博客
Java之23种计划模式先容-CSDN博客
Java之23种计划模式代码示例_java好用的计划模板编程-CSDN博客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表