软件设计---面向接口编程

loganjr 2016-06-17

                             软件设计---面向接口编程

java中面向接口编程应用十分广泛,在了解面向接口编程之前,必须先知道什么是里氏代换原则。

里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象。简单的说就是一个类可以说成是它的父类,而他的父类却不可以说成是它的子类。

举个例子:

//汽车接口
Interface Car{
}
//奔驰汽车
class BenChiCar implemnts Car{
}
//宝马汽车
class BaoMaiCar implemnts Car{
}

 奔驰和宝马都实现了Car接口,可以说奔驰和宝马都是汽车,而不能说汽车就是奔驰或宝马,因为还有其他品牌的汽车

如果想详细了解历史代换原则,可以看这篇博客http://blog.csdn.net/lovelion/article/details/7540445,写的很好,很详细

这些都了解后,就可以谈谈面向接口编程了,还是上面的例子

//汽车接口
Interface Car{
      void drive();
}
//奔驰汽车类
class BenChiCar implemnts Car{
      @Override
      void drive(){
           System.out.println("奔驰开动了");
      }
}
//宝马汽车类
class BaoMaiCar implemnts Car{
      @Override
      void drive(){
           System.out.println("宝马开动了");
      }
}
//测试类
class Test{
      Car car1=new BenChiCar();
      car1.drive();
      Car car2=new BaoMaCar();
      car2.drive();
}

打印出来的结果:奔驰开动了
               宝马开动了

 

这就是面对接口编程的优点。
假设还有其它类实现了接口Car:xxCar
对应的drive方法实现效果是://输出 XXCar开动了

...以此类推...

当你使用Car car = new XXCar()时,你不用关心这里的XX到底是什么类(BenChiCar,BaoMaCar,...),
也不用关心到底他们输出了什么。你只要知道,他们都实现了Car接口,即他们都实现了void drive()
这个方法。那么你都可以调用 car.drive() 来执行该方法。

相关推荐