A use-a B 依赖(依赖)
一个类的方法中使用到了另外一个类的对象
屠夫 杀 猪 农民 养 猪
一个类 屠夫 一个类 农民
他可以做一件事 杀猪 他可以养猪
需要一头猪
不是整体和部分的关系 是因为某一件事产生了关系
临时组合在一起 这件事一旦完成关系随即解散
设计类的关系遵循的原则:高内聚低耦合
耦合度: 紧密程度 继承(实现)>包含>依赖
package rely;
public class Farmer {
//农夫养猪
//参数--->养几个月 返回值--->是一头猪
public Pig feedPig(int month){
Pig pig = new Pig("小花");//依赖--->在农民的方法中用到了猪这个对象
pig.grow(month);
return pig;
}
}
package rely;
public class Butcher {//描述屠夫的
//属性
//方法
public void killPig(Pig pig){
//描述屠夫杀猪的方法 需要提供一头猪
System.out.println("屠夫杀猪了");
String pigName = pig.getName();
int pigWeight = pig.getWeight();
System.out.println(pigName+"的体重为"+pigWeight);
pig.beKilled();
}
}
package rely;
public class Pig {//描述猪的
//属性
private String name;//猪的编号 名字
private int weight = 20;//体重
//构造方法
public Pig(){}
public Pig(String name){
this.name = name;
}
//方法
public void beKilled(){
System.out.println(this.name+"被杀了");
}
public void grow(int month){
//猪长肉
//每个月涨到前一个月的两倍
//返回值 可以不设置 可以另外设计一个方法专门用来告知体重的
//将长肉和告知体重这两件事分开写 可以增强代码的复用性
for(int i = 1;i<=month;i++){
this.weight *= 2;
}
}
public int getWeight(){
//告知体重
return this.weight;
}
public String getName(){
//猪的名字
return this.name;
}
}
package rely;
public class RunMain {
public static void main(String[] args){
//创建农夫对象
Farmer farmer = new Farmer();
//农夫养猪
Pig pig = farmer.feedPig(5);
//创建屠夫对象
Butcher butcher = new Butcher();
//屠夫杀猪
butcher.killPig(pig);
}
}