類之間的6種關係詳解

Mysticbinary發表於2024-08-14

目錄
  • 依賴
  • 關聯(Association)
  • 聚合(Aggregation)
  • 組合(Composition)
  • 繼承(Inheritance)
  • 實現(Implementation)


在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");
        }
    }
    

相關文章