/*汽车基类*/
public abstract class Car {
/** * 安装导航仪 * @param navigator */
public abstract void installNavigator(INavigator navigator);
/** * 开启导航 * 开启导航是调用导航接口实现类的方法 */
public abstract void open();
}
/*宝马牌汽车*/
public class BMWCar extends Car {
/**导航仪*/ INavigator navigator = null;
@Override public void installNavigator(INavigator n) {
System.out.println("宝马成功安装了:"+n.toString());
navigator = n;
}
@Override public void open() {
navigator.work();
}
}
/*法拉利牌汽车*/
public class FerrariCar extends Car {
/**导航仪*/ INavigator navigator = null;
@Override public void installNavigator(INavigator n) {
System.out.println("法拉利成功安装了:"+n.toString());
navigator = n;
}
@Override public void open() {
navigator.work();
}
}
/*导航仪接口*/
public interface INavigator {
/** * 导航实现 */
void work();
}
/*高德导航仪*/
public class AmapNavigator implements INavigator {
@Override public void work() {
System.out.println("我是高德导航仪!");
}
@Override public String toString() {
return "【高德导航仪】";
}
}
/*北斗导航仪*/
public class BdNavigator implements INavigator {
@Override public String toString() {
return "【北斗牌导航仪】";
}
@Override public void work() {
System.out.println("我是北斗导航仪!");
}
}
public class Main {
public static void main(String[] args) {
test1() ;
test1_1() ;
}
public static void test1(){
INavigator bdNavigator = new BdNavigator(); //法拉利安装北斗导航
Car ferrariCar = new FerrariCar() ;
ferrariCar.installNavigator(bdNavigator);
ferrariCar.open();
}
public static void test1_1(){
INavigator amapNavigator = new AmapNavigator(); //宝马安装了高德导航仪
Car ghostCar = new BMWCar();
ghostCar.installNavigator(amapNavigator);
ghostCar.open();
}
}