目錄
- 依賴
- 關聯(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"); } }