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);}}
