Agregación y composición de Java

Agregación y composición en Java

1. Concepto

1. Composición (Composición) representa la relación de'Part-od ': la clase principal tiene subclases y las subclases no pueden existir independientemente de la clase principal

La parte y el todo son innatos y la existencia de la parte depende del todo. Significa que existe una fuerte relación entre el todo y la parte entre los dos objetos, y el ciclo de vida de la parte no puede superar al todo o no puede existir sin el todo. Las "partes" de la relación combinada no se pueden compartir entre el todo.
Por ejemplo: cierto órgano de una persona, una vez que nace una persona, el órgano está ahí, y si una persona muere, el órgano no tiene significado.

2. La agregación representa la relación de'Has-a ': la clase principal contiene subclases, y las subclases pueden existir independientemente de la clase principal, lo que
significa que existe una relación débil entre el todo y parte de los dos objetos, y el ciclo de vida de la parte puede ser Más allá del todo.
Por ejemplo: usted y su computadora (u otros artículos), la computadora le pertenece, pero usted no es dueño de la computadora al nacer, la computadora es producida por un fabricante determinado, y luego la compra y se convierte en parte de usted . Después de su muerte, la computadora puede ser entregada a otros para que la sigan usando. Esto no se llama su supervivencia, entonces esto es agregación.

Dos, la diferencia

Los ciclos de vida de las dos clases en la relación de agregación no están sincronizados, es una relación de agregación; los ciclos de vida de las dos clases en la relación de composición están sincronizados; por ejemplo: relación de agregación, cuando se crea A, es posible que no se cree B; cuando A muere, B no necesariamente muere. La relación de combinación clase A {privado B;} clase B {...} Cuando se crea un objeto A, también se crea un objeto B; cuando el objeto A muere, el objeto B que es un atributo de A también morirá. clase A {privado B b = nuevo B ();…} clase B {…}

Tres, por ejemplo

1. Combinación

public class Person {
    
    
    Brain brain;
    public Person(){
    
    //组合
        brain=new Brain();
    }
 
    public static void main(String[] args) {
    
    
        Person person=new Person();
    }
 
}
class Brain{
    
    
 
 }

2. Agregación

/**
 * Created by Administrator on 2017/10/27.
 */
public class Human {
    
    
    Computer computer;
    Human(Computer computer1){
    
    
        computer=computer1;
    }
 
    public static void main(String[] args) {
    
    
        Computer c=new Computer();//聚合
        Human h=new Human(c);
    }
}
class Computer{
    
    
 
}

Sin embargo, es necesario determinar si una asociación es agregación o combinación en función de los requisitos comerciales reales. ¿Por qué dice que, debido a que puede ser la misma superclase y subclase, en diferentes escenarios comerciales, la relación de asociación cambiará?
Tomemos el software de taxi como ejemplo:
si la empresa estipula que los conductores deben tener su propio automóvil para transportar a los pasajeros cuando ingresan a la estación, entonces se combinan Conductor y Coche.

public class Driver {
    
    

    public Car car;

    public Driver() {
    
    //由司机自己提供
        car = new Car();
    }

    public void drive() {
    
    
        car.start();
    }

}

Si la empresa estipula que mientras el conductor pueda conducir, los diversos vehículos de la empresa están a su disposición para recoger pasajeros. En este momento, Conductor y Coche están en una relación agregada.

public class Driver {
    
    

    public Car car;

    public void setCar(Car car){
    
    //由公司提供,什么车我们不清楚
        this.car = car;
    }

    public void drive() {
    
    
        car.start();
    }

}

Actualización continua ...
Dirección de aprendizaje de referencia del artículo: https://blog.csdn.net/mikimoto_/article/details/103029474

Supongo que te gusta

Origin blog.csdn.net/weixin_44325444/article/details/108325052
Recomendado
Clasificación