本例同愤怒的小鸟相呼应
采用面向接口编程思想组装一台计算机,在这里把计算机的组成部分简化为只有硬盘和cpu。
具体思路如下:
先定义cpu和硬盘的接口:
public interface Cpu {
public abstract String BrandOfCpu();
}
public interface YingPan {
public abstract String yingPan();
}
然后每个接口写两个实现类:
public class IntelCpu implements Cpu {
public String BrandOfCpu() {
return "Intel";
}
}
public class SanXingCpu implements Cpu {
public String BrandOfCpu() {
return "SanXing";
}
}
public class G_5000 implements YingPan {
public String yingPan() {
return "5000G";
}
}
public class G_1000 implements YingPan {
public String yingPan() {
return "1000G";
}
}
之后再电脑类中组装这些东西(把cpu和硬盘当做是电脑的属性):
public class Computer {
private Cpu cpu;
private YingPan yingPan;
public Cpu getCpu() {
return cpu;
}
public void setCpu(Cpu cpu) {
this.cpu = cpu;
}
public YingPan getYingPan() {
return yingPan;
}
public void setYingPan(YingPan yingPan) {
this.yingPan = yingPan;
}
public Computer() {
super();
}
public Computer(Cpu cpu, YingPan yingPan) {
super();
this.cpu = cpu;
this.yingPan = yingPan;
}
public void printInfo() {
System.out.println("我的cpu类型是" + cpu.BrandOfCpu() + "我的硬盘大小是" + yingPan.yingPan());
}
}
最后在test类中new一个电脑是可以直接赋值,或者借用set/get方法赋值。
总结
这个例子跟愤怒的小鸟里面叫声解决方案一样,把接口作为类的一个属性,在实例化的时候直接传过来一个接口的实现类对象,然后通过接口的多态来实现各自不同的方法。这种方式的学名叫做动态绑定。这种组装的思想叫做面向接口编程。