面向介面程式設計還有一些好處:
1.一個功能的呼叫者只需要關心如何使用此功能,而無須關注功能的實現。
如:如我們在main 方法中呼叫一個client程式,我們只需要Client client = new ClientImpl(),無論 ClientImpl 類中定義了多麼複雜的成員函式和成員變數(包括javadoc),你都看不到,你也無須看到。
2.面向介面程式設計便於團隊合作,有了統一的介面(介面是公開的,裡面的方法都是public的),無須擔心別人的程式無法使用我的實現(他根本就不關心)。假如我們團隊正在做一個計算器小程式,想要計算1+2+...+100=?,product manager 寫了一個介面,讓兩個員工分別實現,他最後看那個程式演算法算得快,於是這兩個員工就對介面分別做了實現。PM只需要寫一個程式就可以評估他們的演算法。
public int getTime(Interface in){
int a = System.currentTime();
in.run();
return Sustem.currentTime()-a;
}
試想一下,如果沒有介面,這個經理必須分別new這兩個員工的class,然後呼叫可能不同的方法(A:run(), B:go())來執行。
3.(回答你的問題)介面的繼承關注的是功能的擴充套件,而不是程式碼的修改。class的繼承就是功能性程式碼的增加。兩者關注的焦點不同。
本人觀點:
我個人認為,介面一旦設計好了,很少需要修改,除非業務邏輯或需求有較大變動。
多繼承的用途(只是舉個例子):
如,SUN對一項技術寫了一個規範如J2EE的JMS規範,很多vender在自己的應用伺服器(如WebSphere, WebLogic, Jboss等)都要實現這一個規範,故且把這個規範叫做介面,每個vender想要對這個規範新增自己獨特的功能,怎麼辦呢?就是用介面的繼承,然後對繼承了的介面做實現。
舉個例子:
public interface InterfaceA {
public void method1();
}
public interface InterfaceB {
public void method2();
}
public interface InterfaceAB extends InterfaceA, InterfaceB{
public void method3();
}
public class InterfaceAImpl implements InterfaceA {
@Override
public void method1() {
System.out.println("The implemention of InterfaceA.");
}
}
public class InterfaceBImpl implements InterfaceB {
@Override
public void method2() {
System.out.println("The implemention of InterfaceB.");
}
}
public class InterfaceABImpl implements InterfaceAB {
@Override
public void method1() {
System.out.println("The implemention of InterfaceAB(method1).");
}
@Override
public void method2() {
System.out.println("The implemention of InterfaceAB(method2).");
}
@Override
public void method3() {
System.out.println("The implemention of InterfaceAB(method3).");
}
}
public class Main {
public static void main(String[] args) {
InterfaceA a = new InterfaceABImpl();
InterfaceB b = new InterfaceABImpl();
InterfaceAB ab = new InterfaceABImpl();
a.method1();
b.method2();
ab.method3();
}
}
利用多型(向上轉型),我們就可以達到不同vender間介面的統一。
總之,這種情況我很少見,主要用1、2的特性。
相關文章
- 面向介面程式設計程式設計
- 面向介面的程式設計+MVC程式設計MVC
- 面向介面程式設計把握不好程式設計
- 女生學程式設計有哪些好處呢?程式設計
- java 介面,介面的特性,介面實現多型,面向介面程式設計Java多型程式設計
- go 模仿JAVA,面向介面/鏈式程式設計GoJava程式設計
- 依賴注入與面向介面程式設計思想依賴注入程式設計
- 面向協議程式設計的一些思考協議程式設計
- 談談依賴注入與面向介面程式設計依賴注入程式設計
- 程式設計,不止有程式碼,還有藝術程式設計
- 一篇帶你入門面向介面程式設計程式設計
- 基礎才是重中之重~再說面向介面的程式設計程式設計
- Java語言深入--什麼叫面向介面程式設計Java程式設計
- 程式設計思想 面向切面程式設計程式設計
- 面向介面程式設計實踐之aspnetcoreapi的抽象程式設計NetCoreAPI抽象
- Volley原始碼分析【面向介面程式設計的典範】原始碼程式設計
- 好程式設計師Java教程分享List介面程式設計師Java
- MEF實現設計上的“鬆耦合”(終結篇)面向介面程式設計程式設計
- 高階的網站設計有哪些好處?網站
- 托盤程式設計(出處:程式設計愛好者網站)程式設計網站
- AOP 面向切面程式設計程式設計
- 面向架構程式設計架構程式設計
- AOP(面向切面程式設計)程式設計
- 面向協議程式設計協議程式設計
- 面向切面程式設計AOP程式設計
- 面向方面的程式設計程式設計
- 面向指標程式設計指標程式設計
- 面向切片程式設計(AOP)應用的一些實際例子程式設計
- 好程式設計師分享Vue的一些小技巧程式設計師Vue
- 程式設計期間休息片刻的好處程式設計
- 程式設計師有什麼好當的?程式設計師
- 什麼是程式碼審計?程式碼審計有什麼好處?
- 別站著程式設計:站著工作未必對你的健康有好處程式設計
- 除了程式設計還有其它的要學程式設計
- 設計模式之面向切面程式設計AOP設計模式程式設計
- Android AOP面向切面設計程式設計Android程式設計
- Java 面向切面程式設計AOPJava程式設計
- PHP 的面向方面程式設計PHP程式設計