在JAVA以及其他的面向对象设计模式中,类与类之间主要有6种关系,分别是:依赖、关联、聚合、组合、继承、实现,他们的耦合度依次增强。

其中,关联聚合组合关系仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等,它们在编程语言中的体现却是基本相同的

这些关系在设计类结构时帮助明确类之间的关系和职责。

依赖

  • 定义:一个类A使用到了另一个类B,类B的变化会影响到类A。。
  • 特点:短暂的,通常通过方法参数或局部变量实现。
  • 代码体现
    表现在代码层面,类B作为参数被类A在方法中使用。
    class A {
        void drive(B b) {
            b.start();
        }
    }
    

关联(Association)

  • 定义:一个类与另一个类有某种联系。

  • 特点:较为松散的关系,通常通过成员变量实现。

  • 代码体现

    class Person {
        private Car car;
    
        public Person(Car car) {
            this.car = car;
        }
    }
    

聚合(Aggregation)

  • 定义:一个类包含另一个类,表示“整体-部分”的关系。

  • 特点:弱关系,部分可以独立存在。

  • 代码体现

    class Team {
        private List<Player> players;
    
        public Team(List<Player> players) {
            this.players = players;
        }
    }
    

组合(Composition)

  • 定义:一个类包含另一个类,表示“整体-部分”的关系。

  • 特点:强关系,部分依赖于整体的生命周期。

  • 代码体现

    class House {
        private Room room;
    
        public House() {
            this.room = new Room();
        }
    }
    

继承(Inheritance)

  • 定义:一个类继承另一个类。

  • 特点:表示“是一个”的关系。

  • 代码体现

    class Animal {}
    
    class Dog extends Animal {}
    

实现(Implementation)

  • 定义:一个类实现接口。

  • 特点:实现接口中定义的方法。

  • 代码体现

    interface Flyable {
        void fly();
    }
    
    class Bird implements Flyable {
        public void fly() {
            System.out.println("Bird is flying");
        }
    }
    
posted on 2024-08-14 15:36  Mysticbinary  阅读(60)  评论(0编辑  收藏  举报