1. 程式人生 > >java中介面和工廠設計模式

java中介面和工廠設計模式

一.什麼是介面?

 介面是一種特殊的抽象類,介面中只有抽象方法和全域性變數,且沒有建構函式。

介面的特點有:

  1. Java介面中只能包含public,static,final型別的成員變數(預設都是public,static,final型別的,因此在寫的時候可以省略)和public,abstract型別的成員方法(預設都是public,abstract型別的,因此在寫的時候可以省略);
  2. 介面中沒有構造方法,不能被例項化,介面的物件可以利用子類物件的向上轉型進行例項化;
  3. 一個介面不能實現(implements)另一個介面,但它可以繼承多個其它的介面(介面可以多繼承);
  4. 介面必須要有子類,但此時一個子類可以使用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
我的娛樂活動就是看書
整理需求,溝通客戶
我的娛樂活動是關注實時的網際網路動態