java中介面和工廠設計模式
阿新 • • 發佈:2019-01-24
一.什麼是介面?
介面是一種特殊的抽象類,介面中只有抽象方法和全域性變數,且沒有建構函式。
介面的特點有:
- Java介面中只能包含public,static,final型別的成員變數(預設都是public,static,final型別的,因此在寫的時候可以省略)和public,abstract型別的成員方法(預設都是public,abstract型別的,因此在寫的時候可以省略);
- 介面中沒有構造方法,不能被例項化,介面的物件可以利用子類物件的向上轉型進行例項化;
- 一個介面不能實現(implements)另一個介面,但它可以繼承多個其它的介面(介面可以多繼承);
- 介面必須要有子類,但此時一個子類可以使用implements關鍵字實現多個介面,當類實現了某個Java介面時,它必須實現介面中的所有抽象方法,否則這個類必須宣告為抽象類;
二.介面的應用。
定義一個介面Person,以及他的兩個實現子類Programmer(程式設計師)和Pm(產品經理);
設計一個工廠類Factory,當需要增加更多的子類的時候只需要在Factory中修改方法即可。
Person介面:
package test;
public interface Person {
public static final String type="員工";
String sex="男";
public abstract void work();
public abstract void recreation();
}
工廠類,來對應出具體的子類:
package test; public class Factory { public static Person getType(String className){ if(className.equals("Programmer")){ return new Programmer(); } if(className.equals("Pm")){ return new Pm(); } return null; } }
Programmer類實現了Person介面:
package test;
public class Programmer implements Person{
public void recreation() {
System.out.println("我的娛樂活動就是看書");
}
public void work() {
System.out.println("寫程式碼,除錯bug");
}
}
Pm類實現了Person介面:
package test; public class Pm implements Person { public void recreation() { System.out.println("我的娛樂活動是關注實時的網際網路動態"); } public void work() { System.out.println("整理需求,溝通客戶"); } }
定義一個主類,實現不同人員的不同表現形態:
package test;
public class MainClass {
public static void main(String[] args){
Person p1=Factory.getType("Programmer");
p1.work();
p1.recreation();
Person p2=Factory.getType("Pm");
p2.work();
p2.recreation();
}
}
輸出結果:
寫程式碼,除錯bug
我的娛樂活動就是看書
整理需求,溝通客戶
我的娛樂活動是關注實時的網際網路動態