定义:
1.高层模块不应该依赖低层模块,二者都应该依赖其抽象;
2.抽象不应该依赖细节;
3.细节应该依赖抽象。
class Driver {
@Override
public void drive(Benz benz) {
// TODO Auto-generated method stub
benz.run();
}
}
class Benz {
public void run() {
System.out.println("奔驰车运动。。。。");
}
}
class BMW {
public void run() {
System.out.println("宝马车车运动。。。。");
}
}
Driver driver = new Driver();
Benz benz = new Benz();
driver.drive(benz);
因为Driver 中没有开宝马的方法,与实际生活不符,修改
interface IDriver {
public void drive(ICar car);
}
interface ICar {
public void run();
}
class Benz implements ICar {
public void run() {
System.out.println("奔驰车运动。。。。");
}
}
class BMW implements ICar {
public void run() {
System.out.println("宝马车车运动。。。。");
}
}
class Driver implements IDriver {
@Override
public void drive(ICar car) {
// TODO Auto-generated method stub
car.run();
}
}
IDriver zhangSan = new Driver();
ICar benz = new Benz();
ICar bmw = new BMW();
zhangSan.drive(benz);
zhangSan.drive(bmw);
// 既可以开Benz,也可以开BMW
网友评论