软件设计---面向接口编程
软件设计---面向接口编程
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() 来执行该方法。