组合Aggregation / Composition

定义

什么是

一个类内使用另外一个类作为属性

表达含义

名词

组合 / 聚合

Composition / Aggregation

组合解决代码重用

基本方案

Animal.java

1 2 3 4 5 6
public class Animal { public int age; public void eat() { System.out.println("Animal eat()"); }}

Person.java

1 2+3-4 5-6-7-8 9 10 11
public class Person { public Animal animal; public int age; public double balance; public void eat() { System.out.println("Person eat()"); } public void work() { System.out.println("Person work()"); }}

Dog.java

1 2+3-4-5-6-7 8 9 10
public class Dog { public Animal animal; public int age; public void eat() { System.out.println("Dog eat()"); } public void bark() { System.out.println("Dog bark()"); }}

Zoo.java

1 2 3 4 5 6 7 8 9 10 11
public class Zoo { public static void main(String[] args) { new Zoo().run(); } public void run() { Dog dog = new Dog(); dog.animal = new Animal(); dog.animal.eat(); }}

封装

Person.java

1 2*3 4 5+6+7+8 9+10+11+12 13 14 15
public class Person { private Animal animal; public double balance; public Person() { animal = new Animal(); } public void eat() { animal.eat(); } public void work() { System.out.println("Person work()"); }}

Zoo.java

1 2 3 4 5 6 7 8-9*10 11
public class Zoo { public static void main(String[] args) { new Zoo().run(); } public void run() { Dog dog = new Dog(); dog.animal = new Animal(); dog.eat(); }}

差异化

Person.java

1 2 3 4 5 6 7 8 9 10 11+12 13 14 15 16
public class Person { private Animal animal; public double balance; public Person() { animal = new Animal(); } public void eat() { animal.eat(); System.out.println("Person eat()"); } public void work() { System.out.println("Person work()"); }}

ZZAX 微信公众

文档一更新,立刻告诉你