简单来说 :
多态 能够很好的解决代码耦合性的问题
考虑这样一个场景
有个人 买了辆捷达汽车 .这个系统应该如何设计呢?
public class JettaCar { public void run() { System.out.println("JettaCar run"); } } public class Person { private JettaCar jettaCar; public Person(JettaCar jettaCar) { super(); this.jettaCar = jettaCar; } public void drive() { jettaCar.run(); } public static void main(String[] args) { Person p = new Person(new JettaCar()); p.drive(); }
看起来代码功能好像实现了? 那如果后来他买了宝马车,那又该在怎么做呢?
很简单嘛 在新建一个宝马类,在person中传入即可,
但是我们的核心代码也要修改,能不能不修改person类呢? --当然可以,抽象出汽车接口
定义一个汽车Car接口,定义run方法
在person 中 我们使用该接口
public interface Car { void run(); } public class BmwCar implements Car { @Override public void run() { System.out.println("BmwCar run"); } } Person 里面是一个接口 public class Person { //private JettaCar jettaCar; private Car car; public Person(Car car) { super(); this.car = car; } public void drive() { car.run(); } public static void main(String[] args) { //这里我们传入什么汽车对象 就调用什么对象的run方法,拓展性增强 Person p = new Person(new JettaCar()); p.drive(); } }
总结:系统未来可能需要拓展时,记得定义接口。以增强拓展性。