/*汽车基类*/
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("我是北斗导航仪!");
}
}