浅谈 (依赖、关联、聚合和组合)

1.依赖

依赖是临时的,就比如我现在要用了,就拿来用,关系就好像我和我的一次性纸杯。

使用方式:

类A当中使用了类B,其中类B是做为类A的方法参数、方法中的局部变量、或者静态方法调用。

//    依赖
//    当我要用A3中方法时,就传入A3对象
    public int function(A3 a3){
        return a3.func();
    }

2.关联

关联关系是长期的、稳定的、频繁的。就好像车主和他的车一样的关系。

使用方式:

类A当中使用了类B,其中类B是做为类A的成员变量。

public class People{  
   //关联关系中做为成员变量的类通常会在类中赋值  
    private Car car = new Car();
    public void driverCar(){  
        System.out.println(car.getName);  
    }  
}  

3.聚合

双方的地位不是平等的,是整体和部分之间的关系。整体和部分都有自己的生命周期,一方的消失另外一方不会跟着消失。

 聚合关系是关联关系的一种,耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“总体-个体”的相互关系。比如:老板和他的员工。

使用方式:一般采用set来赋值


    public class People{  
        Car car;  
        House house;   
        //聚合关系中做为成员变量的类通常使用set方法赋值  
         public void setCar(Car car){  
            This.car = car;  
        }  
        public void setHouse(House house){  
            This.house = house;  
        }  
      
        public void driver(){  
            System.out.println(“车的型号:”+car.getType());  
        }  
        public void sleep(){  
            System.out.println(“我在房子里睡觉:”+house.getAddress());  
        }  
    }  

4.组合

 双方的地位不是平等的,是整体和部分之间的关系。比聚合更强,部分的生命周期取决于整体,部分随着整体的消失而消失。区分是聚合还是组合的核心点是在生命周期。 例如:公司和部门。

 相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“总体-部分”的关联关系,“总体”负责“部分”的生命周期,他们之间是共生共死的;而且“部分”单独存在时没有任何意义。

使用方式:一般使用构造方法来赋值


    public class People{  
        Car car;  
        House house;   
        //组合关系采用构造方法赋值
         public People(Car car,House house){  
            This.car = car;  
        }  
        public void setHouse(House house){  
            This.house = house;  
        }  
      
        public void driver(){  
            System.out.println(“车的型号:”+car.getType());  
        }  
        public void sleep(){  
            System.out.println(“我在房子里睡觉:”+house.getAddress());  
        }  
    }  

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值